Spark on MaxCompute支援三種運行方式:Local模式、Cluster模式和DataWorks執行模式。
Local模式
Spark on MaxCompute支援使用者以原生Spark Local模式進行作業調試。
與Yarn Cluster模式類似,您首先需要做以下準備工作:
準備MaxCompute專案以及對應的AccessKey ID、AccessKey Secret。
下載Spark on MaxCompute用戶端。
準備環境變數。
配置spark-defaults.conf。
下載工程模板並編譯。
上述操作更多資訊,請參見搭建Linux開發環境。
通過Spark on MaxCompute用戶端以Spark-Submit方式提交作業,程式碼範例如下:
## Java/Scala
cd $SPARK_HOME
./bin/spark-submit --master local[4] --class com.aliyun.odps.spark.examples.SparkPi \
/path/to/odps-spark-examples/spark-examples/target/spark-examples-2.0.0-SNAPSHOT-shaded.jar
## PySpark
cd $SPARK_HOME
./bin/spark-submit --master local[4] \
/path/to/odps-spark-examples/spark-examples/src/main/python/odps_table_rw.py
注意事項
Local模式讀寫MaxCompute錶速度慢,是因為Local模式是通過Tunnel來讀寫的,讀寫速度相比於Yarn Cluster模式慢。
Local模式是在本地執行的,部分使用者會經常遇到Local模式下可以訪問VPC,但是在Yarn Cluster模式下無法訪問VPC。
Local模式是處於使用者本機環境,網路沒有隔離。而Yarn Cluster模式是處於MaxCompute的網路隔離環境中,必須要配置VPC訪問相關參數。
Local模式下訪問VPC的Endpoint通常是外網Endpoint,而Yarn Cluster模式下訪問VPC的Endpoint通常是VPC網路Endpoint。更多Endpoint資訊,請參見Endpoint。
IDEA Local模式下需要將相關配置寫入代碼中,而在Yarn Cluster模式運行時一定要將這些配置從代碼中刪除。
IDEA Local模式執行
Spark on MaxCompute支援使用者在IDEA中以Local[N]的模式直接運行代碼,而不需要通過Spark on MaxCompute用戶端提交,您需要注意以下兩點:
在IDEA中運行Local模式時,不能直接引用spark-defaults.conf的配置,需要手動指定相關配置,即在
main
下建立resource
>odps.conf
目錄,並在odps.conf
中指定相關配置。配置樣本如下:說明Spark 2.4.5及以上版本需要在
odps.conf
中指定配置項。dops.access.id="" odps.access.key="" odps.end.point="" odps.project.name=""
務必注意需要在IDEA中手動添加Spark on MaxCompute用戶端的相關依賴(
jars
目錄),否則會出現如下報錯:the value of spark.sql.catalogimplementation should be one of hive in-memory but was odps
您可以按照如下流程配置依賴:
在IDEA的頂部功能表列,選擇
。在Project Structure的Modules頁面,選擇目標Spark Module。單擊右側Dependencies後,在左下角單擊表徵圖,選擇JARS or directories...。
在開啟的jars目錄下,選擇Spark on MaxCompute版本及jars,單擊Open。
單擊OK。
通過IDEA提交作業。
Cluster模式
在Cluster模式中,您需要指定自訂程式入口main。main結束(Success or Fail)時,對應的Spark作業就會結束。使用情境適合於離線作業,可與阿里雲DataWorks產品結合進行作業調度,命令列提交方式如下。
# /path/to/MaxCompute-Spark為編譯後的Application JAR包路徑。
cd $SPARK_HOME
bin/spark-submit --master yarn-cluster --class com.aliyun.odps.spark.examples.SparkPi \
/path/to/MaxCompute-Spark/spark-2.x/target/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar
DataWorks執行模式
您可以在DataWorks中運行Spark on MaxCompute離線作業(Cluster模式),以方便與其它類型執行節點整合和調度。
操作步驟如下:
您需要在DataWorks的商務程序中上傳並提交(單擊提交按鈕)資源。
在建立的商務程序中,從資料開發組件中選擇ODPS Spark節點。
雙擊工作流程中的Spark節點,對Spark作業進行任務定義。ODPS Spark節點支援三種spark版本和兩種語言。選擇不同的語言,會顯示相應不同的配置。您可以根據介面提示進行配置,參數詳情請參見開發ODPS Spark任務。其中:
選擇主jar資源:指定任務所使用的資源檔。此處的資源檔需要您提前上傳至DataWorks上。
配置項:指定提交作業時的配置項。
其中
spark.hadoop.odps.access.id
、spark.hadoop.odps.access.key
和spark.hadoop.odps.end.point
無需配置,預設為MaxCompute專案的值(有特殊原因可顯式配置,將覆蓋預設值)。除此之外,
spark-defaults.conf
中的配置需要逐條加到ODPS Spark節點配置項中,例如Executor的數量、記憶體大小和spark.hadoop.odps.runtime.end.point
的配置。ODPS Spark節點的資源檔和配置項對應於spark-submit命令的參數和選項,如下表。此外,您也不需要上傳spark-defaults.conf檔案,而是將spark-defaults.conf檔案中的配置都逐條加到ODPS Spark節點配置項中。
ODPS SPARK節點
spark-submit
主Java、Python資源
app jar or python file
配置項
--conf PROP=VALUE
Main Class
--class CLASS_NAME
參數
[app arguments]
選擇JAR資源
--jars JARS
選擇Python資源
--py-files PY_FILES
選擇File資源
--files FILES
選擇Archives資源
--archives ARCHIVES
手動執行Spark節點,可以查看該任務的執行日誌,從列印出來的日誌中可以擷取該任務的Logview和Jobview的URL,便於進一步查看與診斷。
Spark工作定義完成後,即可在商務程序中對不同類型服務進行編排、統一調度執行。