全部產品
Search
文件中心

AnalyticDB:XIHE BSP SQL開發

更新時間:Jul 06, 2024

雲原生資料倉儲AnalyticDB MySQL版企業版及湖倉版支援通過SQL開發編輯器或JDBC方式提交XIHE BSP SQL作業。本文介紹XIHE BSP SQL作業開發的適用情境、提交方法、常見配置參數及常見問題。

前提條件

應用情境

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作業

在SQL開發頁面,選擇Job型資源群組和XIHE引擎,可提交XIHE BSP作業。

操作步驟

  1. 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,在湖倉版頁簽下,單擊目的地組群ID。

  2. 在左側導覽列,單擊作業開發 > SQL開發

  3. SQLConsole視窗,選擇Job型資源群組和XIHE引擎。

  4. 輸入要執行的SQL語句,並單擊執行SQL

  5. 等待SQL執行完成後,下方執行結果頁簽會顯示結果。

    執行歷史頁簽,可單擊操作列的結果下載執行結果。

使用JDBC或MySQL用戶端同步提交XIHE BSP作業

通過Hint方式,手動指定Job型資源群組,可同步提交XIHE BSP作業。

文法

/*+ resource_group=<resource_group_name>*/ <SQL Statement>;
  • resource_group_name:Job型資源群組的名稱。

  • SQL Statement:SQL語句。每次執行的SQL語句前都需要添加Hint。

樣本

/*+ resource_group=bsptest*/SELECT count(*) from test_db.ods_hudi;

使用JDBC或MySQL用戶端非同步提交XIHE BSP作業

通過Hint方式,手動指定Job型資源群組並指定非同步提交XIHE BSP作業。

文法

/*+ resource_group=<resource_group_name>, query_submission_type=async*/ <SQL Statement>;
  • resource_group_name:Job型資源群組的名稱。

  • query_submission_type=async:指定提交方式為非同步提交。

  • SQL Statement:SQL語句。每次執行的SQL語句前都需要添加Hint。

樣本

/*+ resource_group=bsptest, query_submission_type=async*/SELECT count(*) from test_db.ods_hudi;

非同步任務提交後,會立即返回Job_id。待任務運行完成後,您可以使用SHOW job result WHERE job='Job_id';語句查詢SQL的執行結果。如何查詢非同步任務的狀態,請參見查詢非同步任務狀態

配置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作業支援的配置項如下。

分類

配置項名稱

說明

預設值

資源

elastic_job_max_acu

單個XIHE BSP作業所使用的最大ACU數(包括AppMaster與計算節點)限制。

取值不能超過資源群組的計算最大資源的ACU數。

說明

AppMaster節點是負責單次查詢的解析、任務調度與執行的節點。

9

逾時時間

batch_query_timeout

BSP作業的逾時時間,單位:毫秒(ms)。BSP作業的執行時間大於該配置值時,作業會自動取消。

7200000

優先順序

query_priority

BSP作業的優先順序。

取值:HIGH、NORMAL、LOW和LOWEST。

關於優先順序隊列,詳情請參見Job型資源群組的優先順序隊列

NORMAL

常見問題

如何查看BSP作業的狀態

  • 如果是通過作業編輯器提交的BSP作業,可在作業編輯器 > SQL開發頁面下方的執行歷史頁簽查看。

  • 如果不是通過作業編輯器提交的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 SELECTINSERT OVERWRITE SELECTCREATE TABLE AS SELECT等)使用非同步提交。