更新时间:2024-04-25 GMT+08:00

提交SQL作业(废弃)

功能介绍

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

当前接口已废弃,不推荐使用。

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

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

  • 该API当响应消息中“job_type”“DCL”时,为同步操作。
  • 本章节介绍的API已过时,推荐使用提交SQL作业(推荐)介绍的API。

URI

  • URI格式:

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

  • 参数说明
    表1 URI参数

    名称

    是否必选

    说明

    project_id

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

    queue_name

    当前所在的队列的名称,此SQL若需使用资源将使用该队列的资源进行计算。

请求消息

表2 请求参数

参数

是否必选

参数类型

说明

sql

String

待执行的SQL语句。

currentdb

String

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

conf

Array of objects

用户定义适用于此作业的配置参数。目前支持的配置项:

  • dli.sql.join.preferSortMergeJoin(是否优先使用SortMergeJoin)
  • dli.sql.autoBroadcastJoinThreshold(自动使用BroadcastJoin的数据量阈值)
  • dli.sql.caseSensitive(sql语句是否大小写敏感)
  • dli.sql.shuffle.partitions(指定Shuffle过程中Partition的个数)
  • dli.sql.cbo.enabled(是否打开CBO优化策略)
  • dli.sql.cbo.joinReorder.enabled(开启CBO优化时,是否允许重新调整join的顺序)

响应消息

表3 响应参数

参数

是否必选

参数类型

说明

is_success

Boolean

“job_type”“DCL”时,为请求执行是否成功。“true”表示请求执行成功。

message

String

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

job_id

String

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

job_type

String

作业类型。

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

schema

Array of Map

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

rows

Array of objects

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

示例

  • 请求样例:
    {
        "currentdb": "db1",
        "sql": "desc table1",
        "conf": [
            "dli.sql.shuffle.partitions = 200"
        ]
    }
  • 成功响应样例:
    {
      "is_success": true,
      "message": "",
      "job_id": "8ecb0777-9c70-4529-9935-29ea0946039c",
      "job_type": "DDL",
      "schema": [
        {
          "col_name": "string"
        },
        {
          "data_type": "string"
        },
        {
          "comment": "string"
        }
      ],
      "rows": [
        [
          "c1",
          "int",
          null
        ],
        [
          "c2",
          "string",
          null
        ]
      ]
    }

    调用API出错后,将不会返回上述结果,而是返回错误码和错误信息,详细介绍请参见错误码