您可以通過創(chuàng)建EMR(E-MapReduce) Spark SQL節(jié)點,實現(xiàn)分布式SQL查詢引擎處理結構化數據,提高作業(yè)的執(zhí)行效率。
前提條件
已注冊EMR集群至DataWorks。操作詳情請參見注冊EMR集群至DataWorks。
已擁有開發(fā)權限。(可選,RAM賬號需要)進行任務開發(fā)的RAM賬號已被添加至對應工作空間中,并具有開發(fā)或空間管理員(權限較大,謹慎添加)角色權限,添加成員的操作詳情請參見為工作空間添加空間成員。
已購買資源組完成資源組配置。包括綁定工作空間、網絡配置等。詳情請參見新增和使用Serverless資源組。
已創(chuàng)建業(yè)務流程。數據開發(fā)(DataStudio)基于業(yè)務流程對不同開發(fā)引擎進行具體開發(fā)操作,所以您創(chuàng)建節(jié)點前需要先新建業(yè)務流程,操作詳情請參見創(chuàng)建業(yè)務流程。
如果您在開發(fā)任務時,需要特定的開發(fā)環(huán)境支持,可使用DataWorks提供的自定義鏡像功能,定制化構建任務執(zhí)行所需的組件鏡像。更多信息,請參見鏡像管理。
使用限制
僅支持使用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集群不支持使用可視化注冊函數。
步驟一:創(chuàng)建EMR Spark SQL節(jié)點
進入數據開發(fā)頁面。
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入數據開發(fā)。
新建EMR Spark SQL節(jié)點。
右鍵單擊目標業(yè)務流程,選擇
。說明您也可以鼠標懸停至新建,選擇
。在新建節(jié)點對話框中,輸入名稱,并選擇引擎實例、節(jié)點類型及路徑。單擊確認,進入EMR Spark SQL節(jié)點編輯頁面。
說明節(jié)點名稱支持大小寫字母、中文、數字、下劃線(_)和小數點(.)。
步驟二:開發(fā)EMR Spark SQL任務
在EMR Spark SQL節(jié)點編輯頁面雙擊已創(chuàng)建的節(jié)點,進入任務開發(fā)頁面,執(zhí)行如下開發(fā)操作。
開發(fā)SQL代碼
在SQL編輯區(qū)域開發(fā)任務代碼,您可在代碼中使用${變量名}的方式定義變量,并在節(jié)點編輯頁面右側導航欄的調度配置>調度參數中為該變量賦值。實現(xiàn)調度場景下代碼的動態(tài)傳參,調度參數使用詳情,請參考調度參數支持的格式,示例如下。
SHOW TABLES;
-- 通過${var}定義名為var的變量,若將該變量賦值${yyyymmdd},可實現(xiàn)創(chuàng)建以業(yè)務日期作為后綴的表。
CREATE TABLE IF NOT EXISTS userinfo_new_${var} (
ip STRING COMMENT'IP地址',
uid STRING COMMENT'用戶ID'
)PARTITIONED BY(
dt STRING
); --可以結合調度參數使用。
SQL語句最大不能超過130KB。
如果您工作空間的數據開發(fā)中綁定多個EMR數據源,則需要根據業(yè)務需求選擇合適的引擎。如果僅綁定一個EMR引擎,則無需選擇。
(可選)配置高級參數
您可在節(jié)點高級設置處配置Spark特有屬性參數。更多Spark屬性參數設置,請參考Spark Configuration。不同類型EMR集群可配置的高級參數存在部分差異,具體如下表。
DataLake集群/自定義集群:EMR on ECS
高級參數 | 配置說明 |
queue | 提交作業(yè)的調度隊列,默認為default隊列。關于EMR YARN說明,詳情請參見隊列基礎配置。 |
priority | 優(yōu)先級,默認為1。 |
FLOW_SKIP_SQL_ANALYZE | SQL語句執(zhí)行方式。取值如下:
說明 該參數僅支持用于數據開發(fā)環(huán)境測試運行流程。 |
ENABLE_SPARKSQL_JDBC | 提交SQL代碼的方式。取值如下:
|
USE_GATEWAY | 設置本節(jié)點提交作業(yè)時,是否通過Gateway集群提交。取值如下:
說明 如果本節(jié)點所在的集群未關聯(lián)Gateway集群,此處手動設置參數取值為 |
DATAWORKS_SESSION_DISABLE | 適用于開發(fā)環(huán)境直接測試運行場景。取值如下:
說明 該參數配置為 |
其他 | 自定義Spark Configuration參數,添加Spark特有屬性參數。 配置格式如下: 說明 DataWorks支持您設置全局Spark參數,即按照工作空間粒度指定DataWorks各模塊使用的Spark參數,您可自行指定該全局Spark參數的優(yōu)先級是否高于指定模塊內的Spark參數。關于設置全局Spark參數,詳情請參見設置全局Spark參數。 |
EMR Serverless Spark集群
相關參數設置請參見提交Spark任務參數設置。
高級參數 | 配置說明 |
queue | 提交作業(yè)的調度隊列,默認為dev_queue隊列。 |
priority | 優(yōu)先級,默認為1。 |
FLOW_SKIP_SQL_ANALYZE | SQL語句執(zhí)行方式。取值如下:
說明 該參數僅支持用于數據開發(fā)環(huán)境測試運行流程。 |
ENABLE_SPARKSQL_JDBC | 提交SQL代碼的方式。取值如下:
|
USE_GATEWAY | 設置本節(jié)點提交作業(yè)時,是否通過Gateway集群提交。取值如下:
說明 如果本節(jié)點所在的集群未關聯(lián)Gateway集群,此處手動設置參數取值為 |
DATAWORKS_SESSION_DISABLE | 適用于開發(fā)環(huán)境直接測試運行場景。取值如下:
說明 該參數配置為 |
SERVERLESS_RELEASE_VERSION | Spark引擎版本,默認使用管理中心的集群管理中集群配置的默認引擎版本。如需為不同任務設置不同的引擎版本,您可在此進行設置。 說明 注冊集群指定的SQL Compute(會話)在EMR Serverless Spark控制臺處于未啟動狀態(tài)的時候,高級設置配置中的 |
SERVERLESS_QUEUE_NAME | 指定資源隊列,默認使用管理中心的集群管理中集群配置的默認資源隊列。如有資源隔離和管理需求,可通過添加隊列實現(xiàn)。詳情請參見管理資源隊列。 說明 注冊集群指定的SQL Compute(會話)在EMR Serverless Spark控制臺處于未啟動狀態(tài)的時候,高級設置配置中的 |
SERVERLESS_SQL_COMPUTE | 指定SQL Compute(SQL會話),默認使用管理中心的集群管理中集群配置的默認SQL Compute。如需面向不同任務設置不同的SQL會話,您可在此進行設置。如需創(chuàng)建管理SQL會話,詳情請參見管理SQL會話。 |
其他 | 自定義Spark Configuration參數,添加Spark特有屬性參數。 配置格式如下: 說明 DataWorks支持您設置全局Spark參數,即按照工作空間粒度指定DataWorks各模塊使用的Spark參數,您可自行指定該全局Spark參數的優(yōu)先級是否高于指定模塊內的Spark參數。關于設置全局Spark參數,詳情請參見設置全局Spark參數。 |
保存并運行SQL任務
在工具欄,單擊圖標,保存編寫的SQL語句,單擊圖標,運行創(chuàng)建的SQL任務。
在運行彈窗中,請選擇網絡連通性通過的資源組,確保DataWorks可正常訪問您的Spark服務;在節(jié)點代碼中使用了變量的情況下,請在調試運行階段為變量賦值常量。調度時使用的調度參數以及資源組,請參考步驟三在調度配置中配置。更多任務調試說明,詳情請參見任務調試流程。
如果您需要修改代碼中的參數賦值,請單擊界面上方工具欄的高級運行。參數賦值邏輯詳情請參見運行,高級運行和開發(fā)環(huán)境冒煙測試賦值邏輯有什么區(qū)別。
Spark集群:EMR on ACK
高級參數 | 配置說明 |
FLOW_SKIP_SQL_ANALYZE | SQL語句執(zhí)行方式。取值如下:
說明 該參數僅支持用于數據開發(fā)環(huán)境測試運行流程。 |
USE_GATEWAY | 設置本節(jié)點提交作業(yè)時,是否通過Gateway集群提交。取值如下:
說明 如果本節(jié)點所在的集群未關聯(lián)Gateway集群,此處手動設置參數取值為 |
其他 | 自定義Spark Configuration參數,添加Spark特有屬性參數。 配置格式如下: 說明 DataWorks支持您設置全局Spark參數,即按照工作空間粒度指定DataWorks各模塊使用的Spark參數,您可自行指定該全局Spark參數的優(yōu)先級是否高于指定模塊內的Spark參數。關于全局Spark參數設置,詳情請參見設置全局Spark參數。 |
Hadoop集群:EMR on ECS
高級參數 | 配置說明 |
queue | 提交作業(yè)的調度隊列,默認為default隊列。關于EMR YARN說明,詳情請參見隊列基礎配置。 |
priority | 優(yōu)先級,默認為1。 |
FLOW_SKIP_SQL_ANALYZE | SQL語句執(zhí)行方式。取值如下:
說明 該參數僅支持用于數據開發(fā)環(huán)境測試運行流程。 |
USE_GATEWAY | 設置本節(jié)點提交作業(yè)時,是否通過Gateway集群提交。取值如下:
說明 如果本節(jié)點所在的集群未關聯(lián)Gateway集群,此處手動設置參數取值為 |
其他 | 自定義Spark Configuration參數,添加Spark特有屬性參數。 配置格式如下: 說明 DataWorks支持您設置全局Spark參數,即按照工作空間粒度指定DataWorks各模塊使用的Spark參數,您可自行指定該全局Spark參數的優(yōu)先級是否高于指定模塊內的Spark參數。關于設置全局Spark參數,詳情請參見設置全局Spark參數。 |
執(zhí)行SQL任務
在工具欄單擊圖標,在參數對話框選擇已創(chuàng)建的調度資源組,單擊運行。
說明訪問公共網絡或VPC網絡環(huán)境的數據源需要使用與數據源測試連通性成功的調度資源組。詳情請參見網絡連通方案。
如果您后續(xù)執(zhí)行任務需要修改使用的資源組,您可單擊帶參運行圖標,選擇需要更換的調度資源組。
使用EMR Spark SQL節(jié)點查詢數據時,返回的查詢結果最大支持10000條數據,并且數據總量不能超過10MB。
單擊圖標,保存編寫的SQL語句。
(可選)冒煙測試。
如果您希望在開發(fā)環(huán)境進行冒煙測試,可在執(zhí)行節(jié)點提交或節(jié)點提交后執(zhí)行冒煙測試,操作詳情請參見執(zhí)行冒煙測試。
步驟三:配置節(jié)點調度
如您需要周期性執(zhí)行創(chuàng)建的節(jié)點任務,可單擊節(jié)點編輯頁面右側的調度配置,根據業(yè)務需求配置該節(jié)點任務的調度信息。配置詳情請參見任務調度屬性配置概述。
您需要設置節(jié)點的重跑屬性和依賴的上游節(jié)點,才可以提交節(jié)點。
步驟四:發(fā)布節(jié)點任務
節(jié)點任務配置完成后,需執(zhí)行提交發(fā)布操作,提交發(fā)布后節(jié)點即會根據調度配置內容進行周期性運行。
單擊工具欄中的圖標,保存節(jié)點。
單擊工具欄中的圖標,提交節(jié)點任務。
提交時需在提交對話框中輸入變更描述,并根據需要選擇是否在節(jié)點提交后執(zhí)行代碼評審。
說明您需設置節(jié)點的重跑屬性和依賴的上游節(jié)點,才可提交節(jié)點。
代碼評審可對任務的代碼質量進行把控,防止由于任務代碼有誤,未經審核直接發(fā)布上線后出現(xiàn)任務報錯。如進行代碼評審,則提交的節(jié)點代碼必須通過評審人員的審核才可發(fā)布,詳情請參見代碼評審。
如您使用的是標準模式的工作空間,任務提交成功后,需單擊節(jié)點編輯頁面右上方的發(fā)布,將該任務發(fā)布至生產環(huán)境執(zhí)行,操作請參見發(fā)布任務。
后續(xù)步驟
任務提交發(fā)布后,會基于節(jié)點的配置周期性運行,您可單擊節(jié)點編輯界面右上角的運維,進入運維中心查看周期任務的調度運行情況。詳情請參見查看并管理周期任務。