全部產品
Search
文件中心

DataWorks:建立EMR Spark SQL節點

更新時間:Nov 05, 2024

您可以通過建立EMR(E-MapReduce) Spark SQL節點,實現分布式SQL查詢引擎處理結構化資料,提高作業的執行效率。

前提條件

  • 登入EMR叢集至DataWorks。操作詳情請參見註冊EMR叢集至DataWorks

  • 已擁有開發許可權。(可選,RAM帳號需要)進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發空間管理員(許可權較大,謹慎添加)角色許可權,新增成員的操作詳情請參見為工作空間增加空間成員

  • 已購買資源群組完成資源群組配置。包括綁定工作空間、網路設定等。詳情請參見新增和使用Serverless資源群組

  • 已建立商務程序。資料開發(DataStudio)基於商務程序對不同開發引擎進行具體開發操作,所以您建立節點前需要先建立商務程序,操作詳情請參見建立商務程序

  • 如果您在開發工作單位時,需要特定的開發環境支援,可使用DataWorks提供的自訂鏡像功能,定製化構建任務執行所需的組件鏡像。更多資訊,請參見鏡像管理

使用限制

  • 僅支援使用Serverless資源群組(推薦)或獨享調度資源群組運行該類型任務。

  • DataLake或自訂叢集若要在DataWorks管理中繼資料,需先在叢集側配置EMR-HOOK。若未配置,則無法在DataWorks中即時展示中繼資料、產生審計日誌、展示血緣關係、開展EMR相關治理任務。配置EMR-HOOK,詳情請參見配置Spark SQL的EMR-HOOK

  • EMR on ACK類型的Spark叢集及EMR Serverless Spark叢集不支援血緣。

  • DataLake叢集與自訂叢集支援使用可視化註冊函數,EMR on ACK 類型的Spark叢集、EMR Serverless Spark叢集不支援使用可視化註冊函數。

步驟一:建立EMR Spark SQL節點

  1. 進入資料開發頁面。

    登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料開發與治理 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

  2. 建立EMR Spark SQL節點。

    1. 按右鍵目標商務程序,選擇建立節點 > EMR > EMR Spark SQL

      說明

      您也可以滑鼠移至上方至建立,選擇建立節點 > EMR > EMR Spark SQL

    2. 建立節點對話方塊中,輸入名稱,並選擇引擎執行個體節點類型路徑。單擊確認,進入EMR Spark SQL節點編輯頁面。

      說明

      節點名稱支援大小寫字母、中文、數字、底線(_)和小數點(.)。

步驟二:開發EMR Spark SQL任務

在EMR Spark SQL節點編輯頁面雙擊已建立的節點,進入任務開發頁面,執行如下開發操作。

開發SQL代碼

在SQL編輯地區開發工作單位代碼,您可在代碼中使用${變數名}的方式定義變數,並在節點編輯頁面右側導覽列的調度配置>調度參數中為該變數賦值。實現調度情境下代碼的動態傳參,調度參數使用詳情,請參考調度參數支援的格式,樣本如下。

SHOW TABLES; 
-- 通過${var}定義名為var的變數,若將該變數賦值${yyyymmdd},可實現建立以業務日期作為尾碼的表。
CREATE TABLE IF NOT EXISTS userinfo_new_${var} (
ip STRING COMMENT'IP地址',
uid STRING COMMENT'使用者ID'
)PARTITIONED BY(
dt STRING
); --可以結合調度參數使用。
說明
  • SQL語句最大不能超過130KB。

  • 如果您工作空間的資料開發中綁定多個EMR資料來源,則需要根據業務需求選擇合適的引擎。如果僅綁定一個EMR引擎,則無需選擇。

(可選)配置進階參數

您可在節點進階設定處配置Spark特有屬性參數。更多Spark屬性參數設定,請參考Spark Configuration。不同類型EMR叢集可配置的進階參數存在部分差異,具體如下表。

DataLake叢集/自訂叢集:EMR on ECS

進階參數

配置說明

queue

提交作業的調度隊列,預設為default隊列。關於EMR YARN說明,詳情請參見隊列基礎配置

priority

優先順序,預設為1。

FLOW_SKIP_SQL_ANALYZE

SQL語句執行方式。取值如下:

  • true:表示每次執行多條SQL語句。

  • false(預設值):表示每次執行一條SQL語句。

說明

該參數僅支援用於資料開發環境測試回合流程。

ENABLE_SPARKSQL_JDBC

提交SQL代碼的方式。取值如下:

  • true:表示採用JDBC的方式提交SQL代碼。當EMR叢集無Kyuubi服務時,提交SQL代碼至Spark Thrift Server,當EMR叢集有Kyuubi服務時,則通過JDBC方式提交SQL代碼至Kyuubi,並支援自訂Spark參數。

    兩種方式均支援中繼資料血緣,但提交至Thrift Server的任務會缺少中繼資料對應節點任務的產出資訊。

  • false(預設值):表示採用Spark-submit cluster方式提交SQL代碼。此提交方式下,Spark2和Spark3均支援中繼資料血緣和產出資訊。還支援自訂Spark參數。

    說明
    • Spark-submit cluster提交方式預設在EMR叢集HDFS的/tmp目錄下建立臨時檔案及目錄,您需要保證目錄具有讀寫權限。

    • 當選擇Spark-submit cluster方式提交時,您可以直接在進階配置裡追加自訂SparkConf參數。提交代碼時DataWorks會自行在命令中加上新增的參數。例如,"spark.driver.memory" : "2g"

USE_GATEWAY

設定本節點提交作業時,是否通過Gateway叢集提交。取值如下:

  • true:通過Gateway叢集提交。

  • false(預設值):不通過Gateway叢集提交,預設提交到header節點。

說明

如果本節點所在的叢集未關聯Gateway叢集,此處手動設定參數取值為true時,後續提交EMR作業時會失敗。

DATAWORKS_SESSION_DISABLE

適用於開發環境直接測試回合情境。取值如下:

  • true:表示每次運行SQL語句都會建立一個JDBC Connection。

  • false(預設值):表示使用者在一個節點裡運行不同的SQL語句時會複用同一個JDBC Connection。

說明

該參數配置為false時不會列印Hive的yarn applicationId,如需列印yarn applicationId,請配置該參數為true

其他

自訂Spark Configuration參數,添加Spark特有屬性參數。

配置格式如下: spark.eventLog.enabled : false ,DataWorks會自動在最終下發EMR叢集的代碼中進行補全,格式為:--conf key=value

說明

DataWorks支援您設定全域Spark參數,即按照工作空間粒度指定DataWorks各模組使用的Spark參數,您可自行指定該全域Spark參數的優先順序是否高於指定模組內的Spark參數。關於設定全域Spark參數,詳情請參見設定全域Spark參數

EMR Serverless Spark叢集

相關參數設定請參見提交Spark任務參數設定

進階參數

配置說明

queue

提交作業的調度隊列,預設為dev_queue隊列。

priority

優先順序,預設為1。

FLOW_SKIP_SQL_ANALYZE

SQL語句執行方式。取值如下:

  • true:表示每次執行多條SQL語句。

  • false(預設值):表示每次執行一條SQL語句。

說明

該參數僅支援用於資料開發環境測試回合流程。

ENABLE_SPARKSQL_JDBC

提交SQL代碼的方式。取值如下:

  • true:表示採用JDBC的方式提交SQL代碼。當EMR叢集無Kyuubi服務時,提交SQL代碼至Spark Thrift-Server,當EMR叢集有Kyuubi服務時,則通過JDBC方式提交SQL代碼至Kyuubi,並支援自訂Spark參數。

    兩種方式均支援中繼資料血緣,但提交至Thrift-Server的任務會缺少中繼資料對應節點任務的產出資訊。

  • false(預設值):表示採用Spark-submit cluster方式提交SQL代碼。此提交方式下,Spark2和Spark3均支援中繼資料血緣和產出資訊。還支援自訂Spark參數。

    說明
    • Spark-submit cluster提交方式預設在EMR叢集HDFS的/tmp目錄下建立臨時檔案及目錄,您需要保證目錄具有讀寫權限。

    • 當選擇Spark-submit cluster方式提交時,您可以直接在進階配置裡追加自訂SparkConf參數。提交代碼時DataWorks會自行在命令中加上新增的參數。例如,"spark.driver.memory" : "2g"

USE_GATEWAY

設定本節點提交作業時,是否通過Gateway叢集提交。取值如下:

  • true:通過Gateway叢集提交。

  • false(預設值):不通過Gateway叢集提交,預設提交到header節點。

說明

如果本節點所在的叢集未關聯Gateway叢集,此處手動設定參數取值為true時,後續提交EMR作業時會失敗。

DATAWORKS_SESSION_DISABLE

適用於開發環境直接測試回合情境。取值如下:

  • true:表示每次運行SQL語句都會建立一個JDBC Connection。

  • false(預設值):表示使用者在一個節點裡運行不同的SQL語句時會複用同一個JDBC Connection。

說明

該參數配置為false時不會列印Hive的yarn applicationId,如需列印yarn applicationId,請將該參數配置為true

SERVERLESS_RELEASE_VERSION

Spark引擎版本,預設使用管理中心叢集管理中叢集配置的預設引擎版本。如需為不同任務設定不同的引擎版本,您可在此進行設定。

說明

註冊叢集指定的SQL Compute(會話)在EMR Serverless Spark控制台處於未啟動狀態的時候,進階設定配置中的SERVERLESS_RELEASE_VERSION參數才會生效。

SERVERLESS_QUEUE_NAME

指定資源隊列,預設使用管理中心叢集管理中叢集配置的預設資源隊列。如有資源隔離和管理需求,可通過添加隊列實現。詳情請參見管理資源隊列

說明

註冊叢集指定的SQL Compute(會話)在EMR Serverless Spark控制台處於未啟動狀態的時候,進階設定配置中的SERVERLESS_QUEUE_NAME參數才會生效。

SERVERLESS_SQL_COMPUTE

指定SQL Compute(SQL會話),預設使用管理中心叢集管理中叢集配置的預設SQL Compute。如需面向不同任務設定不同的SQL會話,您可在此進行設定。如需建立管理SQL會話,詳情請參見管理SQL會話

其他

自訂Spark Configuration參數,添加Spark特有屬性參數。

配置格式如下: spark.eventLog.enabled : false ,DataWorks會自動在最終下發EMR叢集的代碼中進行補全,格式為:--conf key=value

說明

DataWorks支援您設定全域Spark參數,即按照工作空間粒度指定DataWorks各模組使用的Spark參數,您可自行指定該全域Spark參數的優先順序是否高於指定模組內的Spark參數。關於設定全域Spark參數,詳情請參見設定全域Spark參數

儲存並運行SQL任務

在工具列,單擊儲存表徵圖,儲存編寫的SQL語句,單擊運行表徵圖,運行建立的SQL任務。

在運行彈窗中,請選擇網路連通性通過的資源群組,確保DataWorks可正常訪問您的Spark服務;在節點代碼中使用了變數的情況下,請在調試運行階段為變數賦值常量。調度時使用的調度參數以及資源群組,請參考步驟三調度配置中配置。更多任務調試說明,詳情請參見任務調試流程

說明

如果您需要修改代碼中的參數賦值,請單擊介面上方工具列的進階運行。參數賦值邏輯詳情請參見運行,進階運行和開發環境煙霧測試 (Smoke Test)賦值邏輯有什麼區別

Spark叢集:EMR on ACK

進階參數

配置說明

FLOW_SKIP_SQL_ANALYZE

SQL語句執行方式。取值如下:

  • true:表示每次執行多條SQL語句。

  • false(預設值):表示每次執行一條SQL語句。

說明

該參數僅支援用於資料開發環境測試回合流程。

USE_GATEWAY

設定本節點提交作業時,是否通過Gateway叢集提交。取值如下:

  • true:通過Gateway叢集提交。

  • false(預設值):不通過Gateway叢集提交,預設提交到header節點。

說明

如果本節點所在的叢集未關聯Gateway叢集,此處手動設定參數取值為true時,後續提交EMR作業時會失敗。

其他

自訂Spark Configuration參數,添加Spark特有屬性參數。

配置格式如下:spark.eventLog.enabled : false ,DataWorks會自動在最終下發EMR叢集的代碼中進行補全,格式為:--conf key=value

說明

DataWorks支援您設定全域Spark參數,即按照工作空間粒度指定DataWorks各模組使用的Spark參數,您可自行指定該全域Spark參數的優先順序是否高於指定模組內的Spark參數。關於全域Spark參數設定,詳情請參見設定全域Spark參數

Hadoop叢集:EMR on ECS

進階參數

配置說明

queue

提交作業的調度隊列,預設為default隊列。關於EMR YARN說明,詳情請參見隊列基礎配置

priority

優先順序,預設為1。

FLOW_SKIP_SQL_ANALYZE

SQL語句執行方式。取值如下:

  • true:表示每次執行多條SQL語句。

  • false(預設值):表示每次執行一條SQL語句。

說明

該參數僅支援用於資料開發環境測試回合流程。

USE_GATEWAY

設定本節點提交作業時,是否通過Gateway叢集提交。取值如下:

  • true:通過Gateway叢集提交。

  • false(預設值):不通過Gateway叢集提交,預設提交到header節點。

說明

如果本節點所在的叢集未關聯Gateway叢集,此處手動設定參數取值為true時,後續提交EMR作業時會失敗。

其他

自訂Spark Configuration參數,添加Spark特有屬性參數。

配置格式如下: spark.eventLog.enabled : false ,DataWorks會自動在最終下發EMR叢集的代碼中進行補全,格式為:--conf key=value

說明

DataWorks支援您設定全域Spark參數,即按照工作空間粒度指定DataWorks各模組使用的Spark參數,您可自行指定該全域Spark參數的優先順序是否高於指定模組內的Spark參數。關於設定全域Spark參數,詳情請參見設定全域Spark參數

執行SQL任務

  1. 在工具列單擊進階運行表徵圖,在參數對話方塊選擇已建立的調度資源群組,單擊運行

    說明
    • 訪問公用網路或VPC網路環境的資料來源需要使用與資料來源測試連通性成功的調度資源群組。詳情請參見網路連通方案

    • 如果您後續執行任務需要修改使用的資源群組,您可單擊帶參運行進階運行表徵圖,選擇需要更換的調度資源群組。

    • 使用EMR Spark SQL節點查詢資料時,返回的查詢結果最大支援10000條資料,並且資料總量不能超過10MB。

  2. 單擊儲存表徵圖,儲存編寫的SQL語句。

  3. (可選)煙霧測試 (Smoke Test)。

    如果您希望在開發環境進行煙霧測試 (Smoke Test),可在執行節點提交或節點提交後執行煙霧測試 (Smoke Test),操作詳情請參見執行煙霧測試 (Smoke Test)

步驟三:配置節點調度

如您需要周期性執行建立的節點任務,可單擊節點編輯頁面右側的調度配置,根據業務需求配置該節點任務的調度資訊。配置詳情請參見任務調度屬性配置概述

說明

您需要設定節點的重跑屬性依賴的上遊節點,才可以提交節點。

步驟四:發布節點任務

節點任務配置完成後,需執行提交發佈動作,提交發布後節點即會根據調度配置內容進行周期性運行。

  1. 單擊工具列中的儲存表徵圖,儲存節點。

  2. 單擊工具列中的提交表徵圖,提交節點任務。

    提交時需在提交對話方塊中輸入變更描述,並根據需要選擇是否在節點提交後執行程式碼檢閱。

    說明
    • 您需設定節點的重跑屬性依賴的上遊節點,才可提交節點。

    • 程式碼檢閱可對任務的代碼品質進行把控,防止由於任務代碼有誤,未經審核直接發布上線後出現任務報錯。如進行程式碼檢閱,則提交的節點代碼必須通過評審人員的審核才可發布,詳情請參見程式碼檢閱

如您使用的是標準模式的工作空間,任務提交成功後,需單擊節點編輯頁面右上方的發布,將該任務發布至生產環境執行,操作請參見發布任務

後續步驟

任務提交發布後,會基於節點的配置周期性運行,您可單擊節點編輯介面右上方的營運,進入營運中心查看周期任務的調度運行情況。詳情請參見查看並管理周期任務