雲原生資料倉儲AnalyticDB MySQL版企業版及湖倉版支援通過SQL開發編輯器或JDBC方式提交XIHE BSP SQL作業。本文介紹XIHE BSP SQL作業開發的適用情境、提交方法、常見配置參數及常見問題。
前提條件
已在企業版及湖倉版叢集中建立Job型資源群組。具體操作,請參見建立資源群組。
已建立企業版及湖倉版叢集的資料庫帳號。
如果是通過阿里雲帳號訪問,只需建立高許可權帳號。具體操作,請參見建立高許可權帳號。
如果是通過RAM使用者訪問,需要建立高許可權帳號和普通帳號並且將RAM使用者綁定到普通帳號上。具體操作,請參見建立資料庫帳號和綁定或解除綁定RAM使用者與資料庫帳號。
應用情境
XIHE BSP SQL作業由XIHE BSP引擎執行,適用於ETL情境、大查詢、突發低優先順序查詢。關於XIHE BSP引擎的更多內容,請參見計算引擎。
ETL情境
典型的ETL流程如下圖。
從資料來源到ADS層的資料清洗、資料轉換等操作通常資料量較大,耗時較長。一般不需要關心具體查詢的回應時間,只要整體ELT流程能夠在特定時間點前完成,對可靠性要求更高,需要支援自動重試等能力。這部分查詢可以使用XIHE BSP方式執行,充分利用XIHE BSP輸送量大、可靠性更高、成本更低的優勢。
對於ADS層的查詢,通常對查詢回應時間更加敏感,常要求秒級甚至毫秒級的響應,這部分查詢可以使用XIHE MPP方式執行,以充分利用XIHE MPP引擎速度更快的優勢。
XIHE MPP方式無法執行的大查詢
由於XIHE MPP執行方式的限制,部分資料量較大的查詢可能出現記憶體報錯、查詢異常等情況。如果仍要在XIHE MPP方式下執行,需要進行擴容等操作來增加更多的資源,從成本來看並不經濟。此時可嘗試使用XIHE BSP方式執行,查詢會在指定的Job型資源群組中執行資料落盤,對於大查詢更加友好,且Job型資源群組的資源按需申請、按需付費,成本也會更低。
突發的低優先順序查詢
低優先順序查詢通常對回應時間不敏感,但由於其突發性,系統資源可能不足,可能影響其他查詢的正常執行。此時可嘗試將這些低優先順序查詢放入Job型資源群組以XIHE BSP方式執行,緩解系統的資源壓力,防止查詢之間的互相影響。
使用限制
不支援通過XIHE BSP方式寫Hudi表。
不支援通過XIHE BSP方式讀寫Delta表。
開發XIHE BSP作業
您可以採用以下任意一種方式開發XIHE BSP作業。
使用SQL開發編輯器提交XIHE BSP作業
使用JDBC或MySQL用戶端同步提交XIHE BSP作業
使用JDBC或MySQL用戶端非同步提交XIHE BSP作業
配置XIHE BSP作業
您可以設定一個XIHE BSP作業可以使用的資源、預設逾時時間和優先順序。
配置方法
BSP作業的配置,可以僅對單個作業生效,可以對單個Job型資源群組執行的所有作業生效,也可以對叢集所有的作業生效。
僅對單個作業生效
通過Hint/*+ resource_group=<resource_group_name>,<config_name>*/,使作業配置只對單個作業生效。
其中resource_group_name為資源群組名稱,config_name為配置項列表中的配置項名稱。
樣本:指定在Job型資源群組bsptest中執行作業,該作業最多可使用20 ACU。
/*+ resource_group=bsptest,elastic_job_max_acu=20*/SELECT count(*) from test_db.ods_hudi;資源群組內生效
通過SET adb_config <resource_group_name>.<config_name>,使作業配置對某個Job型資源群組內執行的所有作業均生效。
其中resource_group_name為資源群組名稱,config_name為配置項列表中的配置項名稱。
樣本:在Job型資源群組bsptest中執行的所有作業,每個作業最多可使用20 ACU。
SET adb_config bsptest.elastic_job_max_acu=20;查看配置是否生效
查看資源群組的作業配置是否生效,可以使用SHOW ADB_CONFIG KEY=<resource_group_name>.<config_name>。
叢集內生效
通過SET adb_config <config_name>,使作業配置對叢集內執行的所有作業均生效。其中config_name為配置項列表中的配置項名稱。
樣本:在叢集中執行的所有作業,每個作業最多可使用20 ACU。
SET adb_config elastic_job_max_acu=20;查看配置是否生效
查看叢集的作業配置是否生效,可以使用SHOW ADB_CONFIG KEY=<config_name>。
配置項列表
XIHE BSP作業支援的配置項如下。
分類 | 配置項名稱 | 說明 | 預設值 |
資源 |
| 單個XIHE BSP作業所使用的最大ACU數(包括AppMaster與計算節點)限制。 取值不能超過資源群組的計算最大資源的ACU數。 說明 AppMaster節點是負責單次查詢的解析、任務調度與執行的節點。 | 9 |
逾時時間 |
| BSP作業的逾時時間,單位:毫秒(ms)。BSP作業的執行時間大於該配置值時,作業會自動取消。 | 7200000 |
優先順序 |
| BSP作業的優先順序。 取值:HIGH、NORMAL、LOW和LOWEST。 關於優先順序隊列,詳情請參見Job型資源群組的優先順序隊列。 | NORMAL |
常見問題
如何查看BSP作業的狀態
如果是通過作業編輯器提交的BSP作業,可在頁面下方的執行歷史頁簽查看。
如果不是通過作業編輯器提交的BSP作業,可通過
information_schema.kepler_meta_elastic_job_list表查看。查詢方法如下:SELECT status FROM information_schema.kepler_meta_elastic_job_list WHERE process_id='<job_id>';說明information_schema.kepler_meta_elastic_job_list表中會儲存最近30天提交的BSP任務,最多儲存1000個。您可對該表進行彙總等進一步統計分析。以下樣本為統計各個狀態的BSP作業數量。SELECT status,count(*) FROM information_schema.kepler_meta_elastic_job_list GROUP BY status;
如何選擇BSP作業的同步提交與非同步提交方式
同步提交與非同步提交功能上並無差別,區別僅在於用戶端是否需要等待查詢執行完成。
非同步提交會有如下限制:
結果集返回最多10000行。
結果集(包括對應的csv檔案下載連結)最多儲存30天,最多儲存1000個。
建議對執行時間較長、計算量較大,但結果集較小的查詢(如INSERT INTO SELECT、INSERT OVERWRITE SELECT、CREATE TABLE AS SELECT等)使用非同步提交。