全部產品
Search
文件中心

AnalyticDB:Spark應用開發介紹

更新時間:Jul 06, 2024

AnalyticDB for MySQL企業版及湖倉版Spark離線應用和流應用的開發方法相同。本文介紹如何進行Spark作業開發。

開發工具

範例程式碼

本文以讀取OSS資料為例,描述了Spark應用代碼的編寫方式,其中包括應用程式名稱、conf配置參數等通用參數,還包括Java、Scala、Python應用的特定配置參數。命令列參數格式為JSON格式。樣本如下:

 {
  "args": ["args0", "args1"],
  "name": "spark-oss-test",
  "file": "oss://<testBucketName>/jars/test/spark-examples-0.0.1-SNAPSHOT.jar",
  "className": "com.aliyun.spark.oss.SparkReadOss",
  "conf": {
    "spark.driver.resourceSpec": "medium",
    "spark.executor.resourceSpec": "medium",
    "spark.executor.instances": 2,
    "spark.adb.connectors": "oss"
  }
}

通用參數

參數名稱

是否必填

樣本值

使用說明

name

"name": "spark-oss-test"

Spark應用程式名稱。

file

Python/Java/Scala應用必填

"file":"oss://<testBucketName>/jars/test/spark-examples-0.0.1-SNAPSHOT.jar"

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

    重要

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

    OSS Bucket與AnalyticDB MySQL叢集需要在同一地區。

files

"files":["oss://<testBucketName>/path/to/files_name1","oss://<testBucketName>/path/to/files_name2"]

Spark應用依賴的檔案資源,檔案會被下載到Driver和Executor進程的當前執行目錄下。

支援設定檔別名,例如oss://<testBucketName>/test/test1.txt#test1,test1為檔案別名,您可以使用./test1或者./test1.txt訪問檔案。

多個檔案中間用英文逗號(,)分隔。

說明
  • files中包含名為log4j.properties的檔案時,Spark會使用該log4j.properties檔案作為日誌配置。

  • Spark應用所依賴的所有檔案須儲存在OSS中。

archives

"archives":["oss://<testBucketName>/path/to/archives","oss://<testBucketName>/path/to/archives"]

Spark應用依賴的壓縮包資源,目前支援.TAR.GZ尾碼。壓縮包會被解壓到當前Spark進程的目前的目錄下。

支援設定檔別名,例如oss://testBucketName/test/test1.tar.gz#test1,test1為檔案別名。假設test2.txt是test1.tar.gz壓縮包中的檔案,您可以使用./test1/test2.txt或者./test1.tar.gz/test2.txt訪問解壓後的檔案。

多個壓縮包中間使用英文逗號(,)分隔。

說明

Spark應用所依賴的所有壓縮包須儲存在OSS中。壓縮包解壓縮失敗,任務會失敗。

conf

"conf":{"spark.driver.resourceSpec": "medium",spark.executor.resourceSpec":"medium,"spark.executor.instances": 2,"spark.adb.connectors": "oss"}

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

Java應用參數

參數名稱

是否必填

樣本值

使用說明

args

"args":["args0", "args1"]

請根據業務需求,填寫使用JAR包時需要使用的參數。多個參數之間以英文逗號(,)分隔。

className

"className":"com.aliyun.spark.oss.SparkReadOss"

Java程式入口類名稱。

jars

"jars":["oss://<testBucketName>/path/to/jar","oss://testBucketName/path/to/jar"]

Spark應用依賴的JAR包,多個JAR包之間以英文逗號(,)分隔。需填寫JAR包檔案的絕對路徑。JAR包在運行時會被加入到Driver和Executor JVM的ClassPath裡面。

重要
  • Spark應用所依賴的所有JAR包須儲存在OSS中。

  • OSS Bucket與AnalyticDB MySQL叢集需要在同一地區。

Scala應用參數

參數名稱

是否必填

樣本值

使用說明

className

"className":"com.aliyun.spark.oss.SparkReadOss"

Scala程式入口類名稱。

jars

"jars":["oss://<testBucketName>/path/to/jar","oss://testBucketName/path/to/jar"]

Spark應用依賴的JAR包,多個JAR包之間以英文逗號(,)分隔。需填寫JAR包檔案的絕對路徑。JAR包在運行時會被加入到Driver和Executor JVM的ClassPath裡面。

重要
  • Spark應用所依賴的所有JAR包須儲存在OSS中。

  • OSS Bucket與AnalyticDB MySQL叢集需要在同一地區。

Python應用參數

參數名稱

是否必填

樣本值

使用說明

pyFiles

"pyFiles":["oss://<testBucketName>/path/to/pyfiles","oss://<testBucketName>/path/to/pyfiles"]

PySpark依賴的Python檔案,尾碼可以是ZIP、PY和EGG。如果依賴多個Python檔案,建議使用ZIP或者EGG壓縮包。您可以在Python代碼中以module方式引用Python檔案。多個壓縮包中間使用英文逗號(,)分隔。

說明

Spark應用所依賴的所有Python檔案須儲存在OSS中。