通過Spark-Submit命令行工具開發Spark應用
云原生數據倉庫 AnalyticDB 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
執行以下命令,下載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
執行以下命令,解壓并安裝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,請參見賬號與權限。 | LTAI5tFosFYFgrt3NzBX**** |
secretId | 是 | 阿里云賬號或具備AnalyticDB for MySQL訪問權限的RAM用戶的AccessKey Secret。 如何獲取AccessKey ID和AccessKey Secret,請參見賬號與權限。 | 1BvoSGRT4FV7GB07VVgrRGUty**** |
regionId | 是 | AnalyticDB for MySQL集群的地域ID。 | cn-hangzhou |
clusterId | 是 | AnalyticDB for MySQL集群的集群ID。 | amv-bp1908350u5**** |
rgName | 是 | 執行Spark應用的Job型資源組名稱。 | test |
ossKeyId | 否 | Spark Jar應用需要的JAR包存儲在本地路徑時,需要配置ossKeyId、ossSecretId、ossUploadPath。
| LTAI5tFosFYFgrt3NzBX**** |
ossSecretId | 否 | 1BvoSGRT4FV7GB07VVgrRGUty**** | |
ossUploadPath | 否 | oss://testBucketname/jars/test1.jar | |
conf參數 | 否 | 與開源Spark中的配置項基本一致,參數格式為 |
提交Spark應用
將Spark應用依賴JAR包上傳到OSS中,具體操作,請參見簡單上傳。
執行以下命令,進入Spark-Submit工具的目錄。
cd adb-spark-toolkit-submit
按如下格式提交應用。
./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。 提交任務不是一個冪等操作,由于網絡超時等原因導致的提交失敗,實際上任務可能在后臺執行成功,為防止任務重復提交,提交任務失敗將不會重試。您需要自行獲取已經提交的任務列表( |
--time-out-seconds | AnalyticDB for MySQL Spark-Submit內部默認的網絡超時時間,超時命令將會失敗重試。單位:秒(s),默認值:10。 |
--enable-inner-endpoint | 當您使用阿里云ECS機器提交Spark時,可以指定此選項,AnalyticDB for MySQL Spark-Submit將使用VPC內網環境來訪問各個服務。 |
--list | 獲取應用列表,常搭配 例如,返回第一頁的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不支持的配置參數。