全部產品
Search
文件中心

MaxCompute:建立ODPS Spark節點

更新時間:Jun 19, 2024

MaxCompute Spark作業可通過Local模式、Cluster模式執行,此外,您也可在DataWorks中運行MaxCompute Spark離線作業(Cluster模式),以便與其它類型執行節點整合和調度。本文為您介紹如何通過DataWorks實現MaxCompute Spark作業的配置與調度。

前提條件

  • 工作空間已綁定引擎:在工作空間配置頁面綁定MaxCompute引擎後,資料開發(DataStudio)頁面才會顯示MaxCompute目錄。詳情請參見綁定MaxCompute引擎
  • 已建立商務程序:DataWorks使用商務程序存放建立的節點。因此,建立節點前需先建立商務程序。詳情請參見建立商務程序

背景資訊

MaxCompute Spark是MaxCompute提供的相容開源Spark的計算服務。它在統一的計算資源和資料集許可權體系之上,提供Spark計算架構,支援您以熟悉的開發使用方式提交運行Spark作業,滿足更豐富的資料處理分析需求。在DataWorks中,您可通過ODPS Spark節點實現MaxCompute Spark任務的調度運行,以及與其他作業的整合操作。

MaxCompute Spark支援使用Java、Scala和Python語言進行開發,並通過Local、Cluster模式運行任務,在DataWorks中運行MaxCompute Spark離線作業時採用Cluster模式執行。更多關於MaxCompute Spark運行模式的介紹,詳情請參見運行模式

開發MaxCompute Spark任務

ODPS Spark節點支援使用Java/ScalaPython語言運行MaxCompute Spark離線作業,不同語言開發步驟及配置介面存在差異,您可根據業務需要選擇使用。

開發語言:Java/Scala

在ODPS Spark節點執行Java或Scala語言類型代碼前,您需先在本地開發好MaxCompute Spark作業代碼,再通過DataWorks上傳為MaxCompute的資源。步驟如下:
  1. 準備開發環境。

    根據所使用系統類別型,準備運行MaxCompute Spark任務的開發環境,詳情請參見搭建Linux開發環境搭建Windows開發環境

  2. 開發Java/Scala代碼。

    在ODPS Spark節點執行Java或Scala語言類型代碼前,需先在本地或已有環境開發好MaxCompute Spark代碼,建議使用MaxCompute Spark提供的專案樣本工程模板進行開發。

  3. 打包代碼並上傳至DataWorks。

    代碼開發完成後,需將其打包,並通過DataWorks上傳為MaxCompute資源,詳情請參見建立並使用MaxCompute資源

後續操作:MaxCompute Spark任務開發完成後,您需建立ODPS Spark節點並運行Spark任務

開發語言:Python(使用預設Python環境實現)

DataWorks可通過將代碼線上寫入DataWorks Python資源的方式,實現PySpark作業開發,並通過ODPS Spark節點提交運行該代碼邏輯。DataWorks上建立Python資源,詳情請參見建立並使用MaxCompute資源;PySpark開發樣本,詳情請參見PySpark開發樣本
說明 該方式使用DataWorks提供的預設Python環境,可直接依賴的三方包有限,若預設環境無法滿足PySpark作業第三方依賴包的需求,可參考下文《開發語言:Python(使用自訂Python環境實現)》方式,自行準備Python環境執行任務。當然,您也可選擇對Python資源支援性更好的PyODPS 2節點PyODPS 3節點
後續操作:MaxCompute Spark任務開發完成後,您需建立ODPS Spark節點並運行Spark任務

開發語言:Python(使用自訂Python環境實現)

若平台提供的預設Python環境無法滿足您的業務需求,則可根據如下步驟自訂Python環境,執行MaxCompute Spark任務。
  1. 本地準備Python環境。

    您可參考PySpark Python版本和依賴支援,根據業務需要配置可用的Python環境。

  2. 打包環境並上傳至DataWorks。

    將Python環境壓縮為一個Zip包,並通過DataWorks上傳為MaxCompute資源,作為後續運行MaxCompute Spark任務的執行環境。詳情請參見建立並使用MaxCompute資源

後續操作:MaxCompute Spark任務開發完成後,您需建立ODPS Spark節點並運行Spark任務

建立ODPS Spark節點並運行Spark任務

步驟一:進入ODPS Spark節點建立入口

  1. 進入資料開發頁面。

    登入DataWorks控制台,單擊左側導覽列的資料建模與開發 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

  2. 進入節點建立入口。
    在資料開發頁面基於具體商務程序建立節點,並根據介面指引配置節點的名稱、路徑等基本資料。建立入口及步驟如下圖。建立節點入口

步驟二:配置ODPS Spark節點參數

DataWorks運行MaxCompute Spark離線作業採用Cluster模式,在Cluster模式中,您需指定自訂程式入口mainmain運行結束(即狀態為SuccessFail)時,對應的Spark作業便會結束。此外,spark-defaults.conf中的配置需逐條加到ODPS Spark節點配置項中。例如,Executor的數量、記憶體大小和spark.hadoop.odps.runtime.end.point的配置。
說明 您無需上傳spark-defaults.conf檔案,而是需將spark-defaults.conf檔案中的配置都逐條加到ODPS Spark節點的配置項中。
Spark任務配置
參數描述對應的spark-submit命令
spark版本

包括Spark1.xSpark2.xSpark3.x版本。

語言此處選擇Java/ScalaPython。請根據實際MaxCompute Spark開發語言進行選擇。
選擇主資源指定任務所使用的主JAR資源檔或主Python資源。

此處的資源檔需提前上傳至DataWorks並已提交,詳情請參見建立並使用MaxCompute資源

app jar or Python file
配置項
指定提交作業時的配置項。其中:
  • spark.hadoop.odps.access.idspark.hadoop.odps.access.keyspark.hadoop.odps.end.point無需配置,預設為MaxCompute專案的值(有特殊原因可顯式配置,將覆蓋預設值)。
  • 您無需上傳spark-defaults.conf檔案,而是需將spark-defaults.conf中的配置逐條加到ODPS SPARK節點配置項中,例如Executor的數量、記憶體大小和spark.hadoop.odps.runtime.end.point的配置。
--conf PROP=VALUE
Main Class配置主類名稱。當開發語言為Java/Scala時,需要配置該參數。--class CLASS_NAME
參數
您可根據需要添加參數,多個參數之間用空格分隔。DataWorks支援使用調度參數,此處參數配置格式為${變數名}。配置完成後需在右側導覽列調度配置 > 參數處給變數賦值。
說明 調度參數支援的賦值格式請參見調度參數支援的格式
[app arguments]
選擇其他資源
您可根據需要,選擇使用如下資源。
  • jar資源:僅支援開發語言為Java/Scala時使用。
  • Python資源:僅支援開發語言為Python時使用。
  • file資源
  • archives資源:僅展示壓縮類型的資源。
此處的資源檔需提前上傳至DataWorks並已提交,詳情請參見建立並使用MaxCompute資源
不同資源分別對應如下命令:
  • --jars JARS
  • --py-files PY_FILES
  • --files FILES
  • --archives ARCHIVES

步驟三:提交並發布節點

ODPS Spark節點需要發布生產環境後,才會自動調度運行。

  1. 在節點編輯頁面,單擊右側的調度配置,配置節點的調度屬性,詳情請參見任務調度屬性配置概述
  2. 儲存並提交節點。
    重要 您需要設定節點的重跑屬性依賴的上遊節點,才可以提交節點。
    1. 單擊工具列中的儲存表徵圖,儲存節點。
    2. 單擊工具列中的提交表徵圖,在提交新版本對話方塊輸入變更描述,單擊確認,提交節點。
      節點提交後,將按照配置調度執行。
    如果您使用的是標準模式的工作空間,提交成功後,需單擊右上方的發布,發布節點,具體操作請參見發布任務

最佳實務

更多情境的MaxCompute Spark任務開發,請參考:

後續步驟

  • 周期任務營運:任務提交發布至生產營運中心調度後,您可通過DataWorks營運中心進行相關營運操作。
  • Spark作業診斷:MaxCompute為Spark作業提供Logview工具以及Spark Web-UI,您可通過作業日誌檢查作業是否已正常提交並執行。