本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

Spark常見報錯

更新時間:2024-08-30 20:10

本文匯總了AnalyticDB for MySQL Spark作業常見的錯誤碼、報錯資訊、報錯原因和解決辦法。您可以參考本文解決報錯。

報錯概覽

現象

錯誤碼

報錯資訊

現象

錯誤碼

報錯資訊

Spark訪問JDBC資料來源失敗。

JDBC_SOURCE_TABLE_NAME_DUPLICATE

Both '$jdbcTableName' and '$jdbcQueryString' can not be specified at the same time

JDBC_NO_SUITABLE_DRIVER

SQLException .* No suitable driver found for

JDBC_COMMUNICATION_FAILURE

CommunicationsException .* Communications link failure

JDBC_SSL_ERROR

SSL peer shut down incorrectly

JDBC_COLUMN_TYPE_PARSER_ERROR

Can't get JDBC type for <資料類型>

業務需要處理的資料量突然變大導致Spark作業無法成功執行。

EXECUTOR_CONTAINER_OOM

Exit Code: 137

EXECUTOR_DISK_FULL

No space left on device

Spark作業執行時立即失敗。

ENI_NOT_VALID

The VPC of the specified ENI and security group are not in the same VPC

DRIVER_FILE_NOTFOUND

java.lang.ClassNotFoundException

Spark執行時偶發失敗。

BROADCAST_TOO_LARGE

Cannot broadcast the table that is larger than

BROADCAST_MEM_NOT_ENOUGH

Not enough memory to build and broadcast the table to all

ADB_DOMAIN_NOT_RESOLVED

unkown host .* ts.adb.com

配置彈性網卡的Spark作業失敗。

SG_MANADED_BY_CLOUD

The security group has been managed by another cloud product.

VSWITCH_IP_NOT_ENOUGH

does not have enough IP addresses

Spark作業處於提交中狀態,無法進入運行中狀態。

EXCEEDED_QUOTA

exceeded quota

Spark SQL讀寫Hudi資料失敗。

HUDI_PARTITION_NOT_EXISTS

Error fetching partition paths with prefix

Spark作業訪問OSS資料來源失敗。

DRIVER_OSS_ACCESS_DENIED

The bucket you access does not belong to you

Spark訪問Elasticsearch資料來源失敗。

ES_DATANODE_NOT_FOUND

EsHadoopNoNodesLeftException: Connection error .* all nodes failed

Spark作業訪問中繼資料失敗。

USER_HAVE_NONE_PRIVILEGE

MetaException .* User have none of the privileges

報錯原因及解決方案

說明

您可以在應用列表頁簽中,搜尋應用ID,單擊日誌,查看目標Spark作業的日誌資訊。具體操作,請參見Spark開發編輯器

Both '$jdbcTableName' and '$jdbcQueryString' can not be specified at the same time

報錯出現日誌:Driver日誌。

報錯原因:通過Spark訪問JDBC資料來源時,OPTIONS配置項中的urldbtable參數重複指定了資料表。

解決方案:資料表僅需指定一次,請刪除url參數中指定的表名。

SQLException .* No suitable driver found for

報錯出現日誌:Driver日誌。

報錯原因:通過Spark訪問JDBC資料來源時,沒有找到合適的驅動。

解決方案:檢查作業配置的JAR包,需確保JAR包中有合適的JDBC驅動程式。同時訪問多種JDBC資料來源時,JAR包中需有所有資料來源相關的JDBC驅動程式。例如:同時訪問Hive和RDS MySQL資料來源,JAR包中應包含Hive資料來源和RDS MySQL資料來源的JDBC驅動。

CommunicationsException .* Communications link failure

報錯出現日誌:Driver日誌。

報錯原因:Spark作業中配置的彈性網卡無法訪問指定的資料來源。常見於訪問RDS MySQL資料來源和HDFS資料來源的情境。

解決方案

  • 檢查當前Spark作業中指定交換器的IP位址區段是否在資料來源的白名單配置中。若不在,則需配置資料來源的白名單。

    例如:訪問RDS資料來源時,若指定交換器的IP位址區段不在RDS的白名單中,則需將指定的交換器IP位址區段添加到RDS的白名單。

  • 檢查當前Spark作業中指定的安全性群組是否開放了目標資料來源的連接埠存取權限。具體操作,請參見添加安全性群組規則

    例如:訪問RDS MySQL資料來源時,應在安全性群組規則的入方向與出方向開放3306連接埠。

  • 檢查當前Spark作業中掛載的彈性網卡是否和目標資料來源在同一個VPC中。

SSL peer shut down incorrectly

報錯出現日誌:Driver日誌。

報錯原因:通過Spark訪問JDBC資料來源時沒有配置正確的SSL認證。

解決方案:請參考通過SSL鏈路訪問RDS MySQL資料文檔中的配置樣本,配置正確的SSL認證資訊。

Can't get JDBC type for <資料類型>

報錯出現日誌:Driver日誌。

報錯原因:Spark訪問JDBC資料來源時資料類型轉換錯誤。例如:訪問RDS MySQL資料時,資料來源中的資料類型為允許為空白的SHORT INT, 映射到AnalyticDB for MySQL表中的類型是INT

解決方案:修改AnalyticDB for MySQL中表的資料類型,確保JDBC資料來源中允許為空白的資料列類型也可以被正確的映射到AnalyticDB for MySQL。 例如:RDS MySQL的資料類型為SHORT INT ,映射到AnalyticDB for MySQL表為BOOLEAN

Exit Code: 137

報錯出現日誌:Driver日誌。

報錯原因Executor進程使用的記憶體超出限制。Spark Executor除了JVM本身使用的記憶體外,還包括堆外記憶體(Shuffle、Cache),以及Python UDF等使用的記憶體。容器使用的記憶體超過了容器允許使用記憶體的限制,導致Spark進程被kill命令強制終止。常見於資料採礦情境或者以Python語言為核心的Spark作業中。

解決方案:調大spark.executor.memoryOverhead參數,該參數表示容器內部非Spark Executor進程可使用的記憶體容量(單位MB),預設為Executor容器總記憶體容量的百分之三十。例如您當前配置的Executor規格是Medium(2核8 GB),則容器內部非Spark Executor進程可使用的記憶體容量預設為是2.4 GB。調整語句如下:

spark.executor.memoryOverhead: 4000MB

No space left on device

報錯出現日誌:Executor日誌。

報錯原因:磁碟空間不足。

解決方案:通過spark.adb.executorDiskSize參數掛載的額外磁碟。具體操作,請參見Spark應用配置參數說明

The VPC of the specified ENI and security group are not in the same VPC

報錯出現日誌:Driver日誌。

報錯原因:Spark作業配置的交換器和安全性群組不在同一VPC內。

解決方案:檢查Spark作業中的配置,並重新設定正確的交換器和安全性群組。

java.lang.ClassNotFoundException

報錯出現日誌:Driver日誌。

報錯原因:提交Spark作業時,上傳的JAR包缺少類,常見於使用第三方JAR包的情境。

解決方案:檢查第三方JAR包是否完整,若不完整,需要重新打包,並確保JAR包中含目標類。

Cannot broadcast the table that is larger than

報錯出現日誌:Driver日誌。

報錯原因:廣播表的大小超過了配置的限制,導致廣播失敗。廣播表的詳情,請參見Broadcast

解決方案

  • Spark作業中廣播表的最大記憶體為8 GB,您可以在提交Spark作業時使用spark.sql.autoBroadcastJoinThreshold參數配置廣播表的記憶體。單位MB。

  • Spark會使用抽樣方法估算表的大小,如果表分布不均勻,估算就會出現錯誤。您可以將spark.sql.autoBroadcastJoinThreshold參數的取值配置為-1,關閉廣播特性,從而保障業務可以順利執行。單位MB。

Not enough memory to build and broadcast the table to all

報錯出現日誌:Driver日誌。

報錯原因:廣播表超過了Driver節點的最大記憶體。廣播表的詳情,請參見Broadcast

解決方案:您需調小spark.sql.autoBroadcastJoinThreshold參數的取值,建議不超過400。單位MB。

unkown host .* ts.adb.com

報錯出現日誌:Driver日誌。

報錯原因:由於網路波動,DNS伺服器串連失敗等原因導致內部服務網域名稱解析失敗。

解決方案:若該報錯發生頻率較高,可以配置spark.adb.eni.adbHostAlias.enabled=true解決。

The security group has been managed by another cloud product.

報錯出現日誌:GetSparkAppLog返回日誌。

報錯原因:Spark作業中指定的安全性群組為另外一個雲端服務管理的安全性群組,不允許在AnalyticDB for MySQL Spark中使用。

解決方案:檢查Spark作業中安全性群組的配置,並重新設定正確的安全性群組。

does not have enough IP addresses

報錯出現日誌:GetSparkAppLog返回日誌。

報錯原因:Spark作業中指定的交換器配額已滿,無法申請更多的IP地址。

解決方案:檢查Spark作業中交換器的配置,並重新設定交換器,確保其有足夠的空閑IP。

exceeded quota

報錯出現日誌:GetSparkAppLog介面返回日誌。

報錯原因:Spark作業執行所需資源超過了Job型資源群組剩餘的可用資源。

解決方案:修改資源群組的計算最大預留資源,或等待其他作業執行完成後再提交Spark作業。

Error fetching partition paths with prefix

報錯出現日誌:Driver日誌。

報錯原因:通過Spark訪問Hudi資料時,所指定的Hudi表分區不存在。

解決方案:檢查Hudi表分區是否存在。

The bucket you access does not belong to you

報錯出現日誌:Driver日誌。

報錯原因spark.adb.roleArn參數指定的角色沒有訪問OSS的許可權。

解決方案您需為RAM使用者授予對應許可權。具體操作,請參見同帳號授權

EsHadoopNoNodesLeftException: Connection error .* all nodes failed

報錯出現日誌:Driver日誌。

報錯原因:檢索分析服務Elasticsearch版不允許Spark直連DataNode訪問資料,導致開源社區的預設配置無法訪問資料。

解決方案:請參考訪問Elasticsearch資料來源文檔中的配置樣本,訪問Elasticsearch資料。

MetaException .* User have none of the privileges

報錯出現日誌:Driver日誌。

報錯原因:執行Spark作業的使用者沒有訪問中繼資料的許可權。

解決方案您需要為執行Spark作業的資料庫帳號綁定RAM使用者並根據讀寫需求授予對應的庫表許可權。具體操作,請參見綁定或解除綁定RAM使用者與資料庫帳號授權資料庫帳號

  • 本頁導讀 (1, M)
  • 報錯概覽
  • 報錯原因及解決方案
  • Both '$jdbcTableName' and '$jdbcQueryString' can not be specified at the same time
  • SQLException .* No suitable driver found for
  • CommunicationsException .* Communications link failure
  • SSL peer shut down incorrectly
  • Can't get JDBC type for <資料類型>
  • Exit Code: 137
  • No space left on device
  • The VPC of the specified ENI and security group are not in the same VPC
  • java.lang.ClassNotFoundException
  • Cannot broadcast the table that is larger than
  • Not enough memory to build and broadcast the table to all
  • unkown host .* ts.adb.com
  • The security group has been managed by another cloud product.
  • does not have enough IP addresses
  • exceeded quota
  • Error fetching partition paths with prefix
  • The bucket you access does not belong to you
  • EsHadoopNoNodesLeftException: Connection error .* all nodes failed
  • MetaException .* User have none of the privileges
文檔反饋
phone 聯絡我們

立即和Alibaba Cloud在線服務人員進行交談,獲取您想了解的產品信息以及最新折扣。

alicare alicarealicarealicare