更新时间:2022-04-16 GMT+08:00
分享

提交SQL作业(推荐)

功能介绍

该API用于通过执行SQL语句的方式向队列提交作业。

作业包含以下类型:DDL、DCL、IMPORT、QUERY和INSERT。其中,IMPORT与导入数据的功能一致,区别仅在于实现方式不同。

另外,用户可使用其他API来对作业进行查询和管理。具体操作有:

该API当响应消息中“job_type”“DCL”时,为同步操作。

调试

您可以在API Explorer中调试该接口。

URI

  • URI格式:

    POST /v1.0/{project_id}/jobs/submit-job

  • 参数说明
    表1 URI参数

    参数名称

    是否必选

    参数类型

    说明

    project_id

    String

    项目编号,用于资源隔离。获取方式请参考获取项目ID

请求消息

表2 请求参数

参数名称

是否必选

参数类型

说明

sql

String

待执行的SQL语句。

currentdb

String

SQL语句执行所在的数据库。当创建新数据库时,不需要提供此参数。

queue_name

String

待提交作业的队列名称,名称只能包含数字、英文字母和下划线,但不能是纯数字,且不能以下划线开头。

conf

Array of Strings

用户以“key/value”的形式设置用于此作业的配置参数。目前支持的配置项请参考表3

tags

Array of Objects

作业的标签。具体请参考表4

表3 conf参数说明

参数名称

默认值

描述

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

在动态模式下,Spark不会删除前面的分区,只覆盖那些运行时没有写入数据的分区。

spark.sql.files.maxPartitionBytes

134217728

读取文件时要打包到单个分区中的最大字节数。

spark.sql.badRecordsPath

-

Bad Records的路径。

dli.sql.sqlasync.enabled

false

DDL和DCL语句是否异步执行,值为“true”时启用异步执行。

dli.sql.job.timeout

-

设置作业运行超时时间,超时取消。单位:毫秒。

表4 tags参数

参数名称

是否必选

参数类型

说明

key

String

标签的键。

value

String

标签的值。

响应消息

表5 响应参数

参数名称

是否必选

参数类型

说明

is_success

Boolean

请求发送是否成功。“true”表示请求发送成功。

message

String

系统提示信息,执行成功时,信息可能为空。

job_id

String

此SQL语句将生成并提交一个新作业,返回此作业的ID,可用于获取作业状态和作业结果。

job_type

String

作业类型。

  • DDL
  • DCL
  • IMPORT
  • EXPORT
  • QUERY
  • INSERT

schema

Array of objects

当语句类型为DDL时,返回其结果的列名称及类型。

rows

Array of objects

当语句类型为DDL时,直接返回其执行结果。

job_mode

String

作业执行模式:

  • async:异步
  • sync:同步

示例

  • 请求样例:
    {
        "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
        ]
      ]
    }

状态码

状态码如表6所示。

表6 状态码

状态码

描述

200

提交成功。

400

请求错误。

500

内部服务器错误。

错误码

调用接口出错后,将不会返回上述结果,而是返回错误码和错误信息,更多介绍请参见错误码

分享:

    相关文档

    相关产品

关闭导读