全部產品
Search
文件中心

AnalyticDB:通過Spark-Submit命令列工具開發Spark應用

更新時間:Mar 25, 2025

AnalyticDB for MySQL提供Spark-Submit命令列工具,當您在通過用戶端串連叢集進行Spark開發時,需要藉助該命令列工具提交Spark應用。本文介紹如何通過AnalyticDB for MySQL的Spark-Submit命令列工具進行Spark應用開發。

前提條件

  • 叢集的產品系列為企業版、基礎版或湖倉版

  • 已建立建立Job型資源群組

  • 叢集與OSS儲存空間位於相同地區。

  • 已安裝JDK,且JDK的版本為1.8及以上版本。

注意事項

通過Spark-Submit命令列工具進行作業開發時,僅支援提交Spark Jar應用,不支援提交Spark SQL。

下載並安裝Spark-Submit

  1. 執行以下命令,下載Spark-Submit命令列工具的安裝包adb-spark-toolkit-submit-0.0.1.tar.gz

    wget https://dla003.oss-cn-hangzhou.aliyuncs.com/adb-spark-toolkit-submit-0.0.1.tar.gz
  2. 執行以下命令,解壓並安裝Spark-Submit。

    tar zxvf adb-spark-toolkit-submit-0.0.1.tar.gz

Spark應用配置參數

Spark-Submit安裝包解壓完成後,進入adb-spark-toolkit-submit/conf目錄,執行vim spark-defaults.conf命令修改配置項。修改後,Spark-Submit命令列工具的指令碼將自動讀取設定檔中的資訊,配置參數會對所有Spark應用生效。

Spark應用配置參數列表如下:

參數

是否必填

參數說明

keyId

阿里雲帳號或具備AnalyticDB for MySQL存取權限的RAM使用者的AccessKey ID。

如何擷取AccessKey ID和AccessKey Secret,請參見帳號與許可權

secretId

阿里雲帳號或具備AnalyticDB for MySQL存取權限的RAM使用者的AccessKey Secret。

如何擷取AccessKey ID和AccessKey Secret,請參見帳號與許可權

regionId

AnalyticDB for MySQL叢集的地區ID。

clusterId

AnalyticDB for MySQL叢集的叢集ID。

rgName

執行Spark應用的Job型資源群組名稱。

ossKeyId

Spark Jar應用需要的JAR包儲存在本地路徑時,需要配置ossKeyId、ossSecretId、ossUploadPath。

  • ossKeyId、ossSecretId為阿里雲帳號或RAM使用者的AccessKey ID和AccessKey Secret。RAM使用者需具備AliyunOSSFullAccess許可權。

  • ossUploadPath為本地JAR包上傳至OSS的路徑。

ossSecretId

ossUploadPath

conf參數

與開源Spark中的配置項基本一致,參數格式為key:value形式,多個參數之間以英文逗號(,)分隔。更多conf參數,請參見Spark應用配置參數說明

提交Spark應用

  1. 將Spark應用依賴JAR包上傳到OSS中,具體操作,請參見簡單上傳

  2. 執行以下命令,進入Spark-Submit工具的目錄。

    cd adb-spark-toolkit-submit
  3. 按如下格式提交應用。

    ./bin/spark-submit  \
    --class com.aliyun.spark.oss.SparkReadOss \
    --verbose \
    --name Job1 \
    --jars oss://testBucketname/jars/test.jar,oss://testBucketname/jars/search.jar\
    --conf spark.driver.resourceSpec=medium \
    --conf spark.executor.instances=1 \
    --conf spark.executor.resourceSpec=medium \
    oss://testBucketname/jars/test1.jar args0 args1
    說明

    Spark應用提交後,返回碼說明如下:

    • 255:應用執行失敗。

    • 0:應用執行成功。

    • 143:應用被Kill。

    參數說明如下。

    參數名稱

    參數說明

    --class

    Java或者Scala程式入口類名稱。Python不需要指定入口類。

    --verbose

    列印出提交Spark過程中產生的日誌。

    --name

    Spark應用程式名稱。

    --jars

    Spark應用依賴的JAR包所在的路徑,可以是本地路徑或OSS路徑。需為絕對路徑。如果有多個JAR包,路徑之間以英文逗號(,)分隔。

    如果您配置本地路徑,您需注意以下內容:

    • RAM使用者具備OSS的AliyunOSSFullAccess許可權。

    • 需在conf/spark-defaults.conf設定檔中設定ossUploadPath參數,指定本地檔案資源上傳到OSS的路徑。

    • 檔案資源上傳時,會使用md5校正檔案內容,當指定的OSS路徑中有相同檔案名稱且md5相同時,將不再重複上傳。

    • 如果手動更新了OSS路徑中的JAR包,請刪除對應的md5檔案。

    --conf

    Spark應用的配置參數。

    與開源Spark-Submit中的配置基本一致。與開源Spark-Submit用法不一致的配置參數及AnalyticDB for MySQL Spark-Submit特有的配置參數,請參見AnalyticDB for MySQL Spark-Submit與開源Spark-Submit的區別

    說明

    配置多個conf時,格式為:--conf key1=value1 --conf key2=value2。

    oss://testBucketname/jars/test1.jar args0 args1

    Spark應用主檔案的儲存路徑,檔案路徑需為絕對路徑。主檔案是入口類所在的JAR包或者Python的入口執行檔案。

    說明

    Spark應用主檔案目前只支援儲存在OSS中。

    args

    請根據業務需求,填寫使用JAR包時需要使用的參數。多個參數之間以空格分隔。

查看Spark應用列表

./bin/spark-submit --list --clusterId <cluster_Id>  --rgName <ResourceGroup_name> --pagenumber 1 --pagesize 3

參數說明:

  • cluster_Id:AnalyticDB for MySQL叢集的叢集ID。

  • ResourceGroup_name:執行Spark應用使用的Job型資源群組名稱。

查詢Spark應用狀態

./bin/spark-submit --status <appId>

appId可在Spark應用列表中查看,詳情請參見查看Spark應用列表

查詢Spark應用提交參數和SparkUI

./bin/spark-submit --detail <appId>

appId可在Spark應用列表中查看,詳情請參見查看Spark應用列表

返回結果中Spark WEB UI欄位即Spark UI地址。

查詢Spark應用日誌

./bin/spark-submit --get-log <appId>

appId可在Spark應用列表中查看,詳情請參見查看Spark應用列表

結束Spark應用

./bin/spark-submit --kill <appId>

appId可在Spark應用列表中查看,詳情請參見查看Spark應用列表

AnalyticDB for MySQL Spark-Submit與開源Spark-Submit的區別

AnalyticDB for MySQL Spark-Submit特有的參數

參數名稱

參數說明

--api-retry-times

AnalyticDB for MySQL Spark-Submit內部執行命令失敗時的重試次數(除提交命令外),預設值:3。

提交任務不是一個等冪操作,由於網路逾時等原因導致的提交失敗,實際上任務可能在後台執行成功,為防止任務重複提交,提交任務失敗將不會重試。您需要自行擷取已經提交的工作清單(--list),或者在AnalyticDB for MySQL Spark控制台查看工作清單判斷任務是否提交成功。

--time-out-seconds

AnalyticDB for MySQL Spark-Submit內部預設的網路逾時時間,逾時命令將會失敗重試。單位:秒(s),預設值:10。

--enable-inner-endpoint

當您使用阿里雲ECS機器提交Spark時,可以指定此選項,AnalyticDB for MySQL Spark-Submit將使用VPC內網環境來訪問各個服務。

--list

擷取應用列表,常搭配--pagenumber--pagesize使用。

例如,返回第一頁的5個應用,則配置如下:

--list 
--pagenumber 1 
--pagesize 5

--pagenumber

指定應用列表的頁數。預設值為1。

--pagesize

指定應用列表每頁顯示的應用個數。預設值為10。

--kill

終止應用。

--get-log

查詢應用日誌。

--status

查詢應用詳情。

AnalyticDB for MySQL Spark-Submit不支援的開源Spark-Submit參數

AnalyticDB for MySQL Spark-Submit暫不支援開源Spark-Submit的配置參數。詳情請參見AnalyticDB for MySQL不支援的配置參數