全部產品
Search
文件中心

AnalyticDB:非同步提交匯入任務

更新時間:Jul 06, 2024

AnalyticDB MySQL版支援通過非同步方式提交資料匯入任務。

應用情境

在使用INSERT INTOINSERT OVERWRITE SELECT匯入資料時,預設是同步執行流程,當資料量較大達到幾百GB,用戶端到AnalyticDB MySQL服務端的串連會中斷,導致資料匯入失敗。因此,在資料量較大的情境,推薦通過非同步方式提交資料匯入任務。

非同步提交任務

文法

SUBMIT JOB INSERT OVERWRITE table_name 
select_statement;

樣本

SUBMIT JOB INSERT OVERWRITE test SELECT * FROM test_external_table;

執行上述語句後,返回job_id。使用job_id可以查詢非同步任務的狀態。

+---------------------------------------+
| job_id                                |
+---------------------------------------+
| 2017112122202917203100908203303000715 |

設定優先權調度

3.1.3.6及以上版本支援優先順序調度。在SQL語句前添加Hint/*+async_job_priority=n*/ 可以指定非同步任務的優先順序。預設優先順序值為1,值越大表示優先順序越高,會被系統優先調度。

/*+async_job_priority=10*/ SUBMIT JOB INSERT OVERWRITE test SELECT * FROM test_external_table;

查詢非同步任務狀態

文法

SHOW JOB STATUS WHERE job='job_id';

樣本

SHOW JOB STATUS WHERE job='2017112122202917203100908203303000715';

返回結果如下:

+---------------------------------------+-------------+---------+----------+-----------------------+-----------------------+----------------------------------------------------------------+
| job_id                                | schema_name | status  | fail_msg | create_time           | update_time           | definition                                                     |
+---------------------------------------+-------------+---------+----------+-----------------------+-----------------------+----------------------------------------------------------------+
| 2017112122202917203100908203303000715 | test        | RUNNING | NULL     | 2023-06-21 22:20:31.0 | 2023-06-21 22:20:40.0 |  INSERT OVERWRITE test SELECT * FROM test_external_table       |
說明

不同核心版本的叢集返回的欄位不同,建議您根據返回結果中的status欄位解析非同步任務。

任務狀態及映射關係

數倉版任務狀態

湖倉版任務狀態

說明

INIT

SUBMITTING

非同步任務已提交。

SUBMITTED

RUNNING

非同步任務執行中。

RUNNING

FINISH

SUCCEEDED

非同步任務執行成功。

FAILED

FAILED

非同步任務執行失敗。

CANCELLED

非同步任務取消執行。

說明
  • CANCELLED為新增的非同步任務狀態,數倉版中無映射關係。

終止任務

說明

  • 未調度起來的任務和已完成(失敗或成功)的任務會被移除隊列。

  • 正在啟動並執行任務被終止,已匯入的資料可能會被復原,建議手動刪除殘留資料。

文法

CANCEL JOB 'job_id';

樣本

CANCEL JOB '2017112122202917203100908203303000715';