提交SQL作业(推荐)
功能介绍
该API用于通过执行SQL语句的方式向队列提交作业。
作业包含以下类型:DDL、DCL、IMPORT、QUERY和INSERT。其中,IMPORT与导入数据的功能一致,区别仅在于实现方式不同。
另外,用户可使用其他API来对作业进行查询和管理。具体操作有:
该API当响应消息中“job_type”为“DCL”时,为同步操作。
URI
- URI格式:
- 参数说明
表1 URI参数 参数名称
是否必选
参数类型
说明
project_id
是
String
项目编号,用于资源隔离。获取方式请参考获取项目ID。
请求消息
| 参数名称 | 是否必选 | 参数类型 | 说明 |
|---|---|---|---|
| sql | 是 | String | 待执行的SQL语句。 |
| currentdb | 否 | String | SQL语句执行所在的数据库。当创建新数据库时,不需要提供此参数。 |
| queue_name | 否 | String | 待提交作业的队列名称,名称只能包含数字、英文字母和下划线,但不能是纯数字,且不能以下划线开头。 |
| conf | 否 | Array of Strings | 用户以“key/value”的形式设置用于此作业的配置参数。目前支持的配置项请参考表3。 |
| tags | 否 | Array of Objects | 作业的标签。具体请参考表4。 |
| 参数名称 | 默认值 | 描述 |
|---|---|---|
| spark.sql.files.maxRecordsPerFile | 0 | 要写入单个文件的最大记录数。如果该值为零或为负,则没有限制。 |
| spark.sql.autoBroadcastJoinThreshold | 209715200 | 配置执行连接时显示所有工作节点的表的最大字节大小。通过将此值设置为“-1”,可以禁用显示。 说明: 当前仅支持运行命令ANALYZE TABLE COMPUTE statistics noscan的配置单元元存储表,和直接根据数据文件计算统计信息的基于文件的数据源表。 |
| spark.sql.shuffle.partitions | 200 | 为连接或聚合过滤数据时使用的默认分区数。 |
| spark.sql.dynamicPartitionOverwrite.enabled | false | 当前配置设置为“false”时,DLI在覆盖写之前,会删除所有符合条件的分区。例如,分区表中有一个“2021-01”的分区,当使用INSERT OVERWRITE语句向表中写入“2021-02”这个分区的数据时,会把“2021-01”的分区数据也覆盖掉。 当前配置设置为“true”时,DLI不会提前删除分区,而是在运行时覆盖那些有数据写入的分区。 |
| spark.sql.files.maxPartitionBytes | 134217728 | 读取文件时要打包到单个分区中的最大字节数。 |
| spark.sql.badRecordsPath | - | Bad Records的路径。 |
| dli.sql.sqlasync.enabled | false | DDL和DCL语句是否异步执行,值为“true”时启用异步执行。 |
| dli.sql.job.timeout | - | 设置作业运行超时时间,超时取消。单位:毫秒。 |
响应消息
| 参数名称 | 是否必选 | 参数类型 | 说明 |
|---|---|---|---|
| is_success | 是 | Boolean | 请求发送是否成功。“true”表示请求发送成功。 |
| message | 是 | String | 系统提示信息,执行成功时,信息可能为空。 |
| job_id | 是 | String | 此SQL语句将生成并提交一个新作业,返回此作业的ID,可用于获取作业状态和作业结果。 |
| job_type | 是 | String | 作业类型。
|
| schema | 否 | Array of objects | 当语句类型为DDL时,返回其结果的列名称及类型。 |
| rows | 否 | Array of objects | 当语句类型为DDL时,直接返回其执行结果。 |
| job_mode | 否 | String | 作业执行模式:
|
请求示例
{
"currentdb": "db1",
"sql": "desc table1",
"queue_name": "default",
"conf": [
"dli.sql.shuffle.partitions = 200"
],
"tags": [
{
"key": "workspace",
"value": "space1"
},
{
"key": "jobName",
"value": "name1"
}
]
} 响应示例
{
"is_success": true,
"message": "",
"job_id": "8ecb0777-9c70-4529-9935-29ea0946039c",
"job_type": "DDL",
"job_mode":"sync",
"schema": [
{
"col_name": "string"
},
{
"data_type": "string"
},
{
"comment": "string"
}
],
"rows": [
[
"c1",
"int",
null
],
[
"c2",
"string",
null
]
]
} 错误码
调用接口出错后,将不会返回上述结果,而是返回错误码和错误信息,更多介绍请参见错误码。