異步提交導(dǎo)入任務(wù)
云原生數(shù)據(jù)倉庫 AnalyticDB MySQL 版支持通過異步方式提交數(shù)據(jù)導(dǎo)入任務(wù)。
應(yīng)用場景
在使用INSERT INTO
或INSERT OVERWRITE SELECT
導(dǎo)入數(shù)據(jù)時(shí),默認(rèn)是同步執(zhí)行流程,當(dāng)數(shù)據(jù)量較大達(dá)到幾百GB,客戶端到AnalyticDB for MySQL服務(wù)端的連接會中斷,導(dǎo)致數(shù)據(jù)導(dǎo)入失敗。因此,在數(shù)據(jù)量較大的場景,推薦通過異步方式提交數(shù)據(jù)導(dǎo)入任務(wù)。
異步提交任務(wù)
語法
SUBMIT JOB INSERT OVERWRITE table_name
select_statement;
示例
SUBMIT JOB INSERT OVERWRITE test SELECT * FROM test_external_table;
執(zhí)行上述語句后,返回job_id。使用job_id可以查詢異步任務(wù)的狀態(tài)。
+---------------------------------------+
| job_id |
+---------------------------------------+
| 2017112122202917203100908203303000715 |
設(shè)置優(yōu)先級調(diào)度
3.1.3.6及以上版本支持優(yōu)先級調(diào)度。在SQL語句前添加Hint/*+async_job_priority=n*/
可以指定異步任務(wù)的優(yōu)先級。默認(rèn)優(yōu)先級值為1,值越大表示優(yōu)先級越高,會被系統(tǒng)優(yōu)先調(diào)度。
/*+async_job_priority=10*/ SUBMIT JOB INSERT OVERWRITE test SELECT * FROM test_external_table;
查詢異步任務(wù)狀態(tài)
語法
SHOW JOB STATUS WHERE job='job_id';
示例
SHOW JOB STATUS WHERE job='2017112122202917203100908203303000715';
返回結(jié)果如下:
+---------------------------------------+-------------+---------+----------+-----------------------+-----------------------+----------------------------------------------------------------+
| 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 |
不同內(nèi)核版本的集群返回的字段不同,建議您根據(jù)返回結(jié)果中的status字段解析異步任務(wù)。
任務(wù)狀態(tài)及映射關(guān)系
數(shù)倉版任務(wù)狀態(tài) | 湖倉版任務(wù)狀態(tài) | 說明 |
INIT | SUBMITTING | 異步任務(wù)已提交。 |
SUBMITTED | RUNNING | 異步任務(wù)執(zhí)行中。 |
RUNNING | ||
FINISH | SUCCEEDED | 異步任務(wù)執(zhí)行成功。 |
FAILED | FAILED | 異步任務(wù)執(zhí)行失敗。 |
無 | CANCELLED | 異步任務(wù)取消執(zhí)行。 |
CANCELLED為新增的異步任務(wù)狀態(tài),數(shù)倉版中無映射關(guān)系。
終止任務(wù)
說明
未調(diào)度起來的任務(wù)和已完成(失敗或成功)的任務(wù)會被移除隊(duì)列。
正在運(yùn)行的任務(wù)被終止,已導(dǎo)入的數(shù)據(jù)可能會被回滾,建議手動刪除殘留數(shù)據(jù)。
語法
CANCEL JOB 'job_id';
示例
CANCEL JOB '2017112122202917203100908203303000715';