云服务器内容精选

  • 请求示例 提交SQL作业,该作业执行的数据库为db1、队列为default,并为该作业设置标签workspace=space1;jobName=name1。 { "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 ] ] }
  • 请求消息 表2 请求参数 参数名称 是否必选 参数类型 说明 sql 是 String 待执行的SQL语句。 currentdb 否 String SQL语句执行所在的数据库。当创建新数据库时,不需要提供此参数。 current_catalog 否 String 待提交作业的表的默认catalog。不填时默认使用 DLI catalog。 queue_name 否 String 待提交作业的队列名称,名称只能包含数字、英文字母和下划线,但不能是纯数字,且不能以下划线开头。 conf 否 Array of Strings 用户以“key/value”的形式设置用于此作业的配置参数。目前支持的配置项请参考表3。 tags 否 Array of Objects 作业的标签。具体请参考表4。 engine_type 否 String 选择执行作业的引擎类型。 表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 当前配置设置为“false”时,DLI在覆盖写之前,会删除所有符合条件的分区。例如,分区表中有一个“2021-01”的分区,当使用INSERT OVERWRITE语句向表中写入“2021-02”这个分区的数据时,会把“2021-01”的分区数据也覆盖掉。 当前配置设置为“true”时,DLI不会提前删除分区,而是在运行时覆盖那些有数据写入的分区。 spark.sql.files.maxPartitionBytes 134217728 读取文件时要打包到单个分区中的最大字节数。 spark.sql.badRecordsPath - Bad Records的路径。 spark.sql.legacy.correlated.scalar.query.enabled false 该参数设置为true: 当子查询中数据不重复的情况下,执行关联子查询,不需要对子查询的结果去重。 当子查询中数据重复的情况下,执行关联子查询,会提示异常,必须对子查询的结果做去重处理,比如max(),min()。 该参数设置为false: 不管子查询中数据重复与否,执行关联子查询时,都需要对子查询的结果去重,比如max(),min(),否则提示异常。 dli.jobs.sql.resubmit.enable null 通过设置该参数可以控制在driver故障、队列重启时Spark SQL作业是否重新提交。 false:禁用作业重试,所有类型的命令都不重新提交,一旦driver故障,作业将标记为失败(FAILED)。 true:启用作业重试,即在driver故障时,所有类型的作业都将重新提交。 注意: 如果配置为true,在执行INSERT等幂等类型的操作时(例如insert into,load data、update),可能会导致数据一致性问题。即driver故障后作业重试,导致driver故障前已插入的数据被重复写入。 spark.sql.optimizer.dynamicPartitionPruning.enabled true 该配置项用于启用或禁用动态分区修剪。在执行SQL查询时,动态分区修剪可以帮助减少需要扫描的数据量,提高查询性能。 配置为true时,代表启用动态分区修剪,SQL会在查询中自动检测并删除那些不满足WHERE子句条件的分区,适用于在处理具有大量分区的表时。 如果SQL查询中包含大量的嵌套left join操作,并且表有大量的动态分区时,这可能会导致在数据解析时消耗大量的内存资源,导致Driver节点的内存不足,并触发频繁的Full GC。 在这种情况下,可以配置该参数为false即禁用动态分区修剪优化,有助于减少内存使用,避免内存溢出和频繁的Full GC。 但禁用此优化可能会降低查询性能,禁用后Spark将不会自动修剪掉那些不满足条件的分区。 表4 tags参数 参数名称 是否必选 参数类型 说明 key 是 String 标签的键。 说明: 标签的键的最大长度为128个字符,标签的键可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格,不能以_sys_开头。 value 是 String 说明: 标签值的最大长度为255个字符,标签的值可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格。
  • 响应消息 表5 响应参数 参数名称 是否必选 参数类型 说明 is_success 是 Boolean 请求发送是否成功。“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,且dli.sql.sqlasync.enabled=false时,直接返回其执行结果。但是最多只能返回1000行。 如果超过1000行,请通过异步方式获取结果。即,提交作业时配置 xxxx = true, 然后从DLI配置的作业桶中获取结果。结果在作业桶上的路径可以通过ShowSqlJobStatus接口返回值中的result_path来获取。结果的全量数据会自动导出到作业桶。 job_mode 否 String 作业执行模式: async:异步 sync:同步
  • 功能介绍 该API用于通过执行SQL语句的方式向队列提交作业。 作业包含以下类型:DDL、DCL、IMPORT、QUERY和INSERT。其中,IMPORT与导入数据(废弃)的功能一致,区别仅在于实现方式不同。 另外,用户可使用其他API来对作业进行查询和管理。具体操作有: 查询作业状态 查询作业详细信息 查询作业结果-方式二(废弃) 导出查询结果 查询所有作业 取消作业(推荐) 该API当响应消息中“job_type”为“DCL”时,为同步操作。
  • 请求示例 更新已有的SQL作业,更新后的作业名称为myjob,以共享模式运行在testQueue上。 { "name": "myjob", "desc": "这是我的第一个作业", "queue_name": "testQueue", "sql_body": "select * from source_table", "run_mode": "shared_cluster", "cu_number": 4, "parallel_number": 4, "checkpoint_enabled": false, "checkpoint_mode": "exactly_once", "checkpoint_interval": 10, "obs_bucket": "", "log_enabled": false, "smn_topic": "", "restart_when_exception": false, "idle_state_retention": 3600, "edge_group_ids": [ "62de1e1c-066e-48a8-a79d-f461a31b2ee1", "2eb00f85-99f2-4144-bcb7-d39ff47f9002" ], "dirty_data_strategy": "0", "udf_jar_url": "group/test.jar" }
  • 请求消息 表2 请求参数说明 参数名称 是否必选 参数类型 说明 name 否 String 作业名称。长度限制:0-57个字符。 desc 否 String 作业描述。长度限制:0-512个字符。 queue_name 否 String 队列名称。长度限制:0-128个字符。 sql_body 否 String Stream SQL语句,至少包含source, query, sink三个部分。长度限制:0-1024*1024个字符。 run_mode 否 String 作业运行模式: shared_cluster:共享。 exclusive_cluster:独享。 edge_node:边缘节点。 默认值为“shared_cluster”。 cu_number 否 Integer 用户为作业选择的CU数量。默认值为“2”。 parallel_number 否 Integer 用户设置的作业并行数目。默认值为“1”。 checkpoint_enabled 否 Boolean 是否开启作业自动快照功能。 开启:true 关闭:false 默认:false checkpoint_mode 否 Integer 快照模式,。两种可选: 1:表示exactly_once,数据只被消费一次。 2:at_least_once,数据至少被消费一次。 默认值为1。 checkpoint_interval 否 Integer 快照时间间隔。单位为秒,默认值为“10”。 obs_bucket 否 String 当“checkpoint_enabled”为“true”时,该参数是用户授权保存快照的OBS桶名称。 当“log_enabled” 为“true”时,该参数是用户授权保存作业日志的OBS桶名称。 log_enabled 否 Boolean 是否开启作业的日志上传到用户的OBS功能。默认为“false”。 smn_topic 否 String 当作业异常时,向该 SMN 主题推送告警信息。 restart_when_exception 否 Boolean 是否开启作业异常自动重启。默认为“false”。 idle_state_retention 否 Integer 空闲状态过期周期,单位为秒,默认值为“3600”。 edge_group_ids 否 Array of Strings 边缘计算组ID列表, 多个ID以逗号分隔。 dirty_data_strategy 否 String 作业脏数据策略。 “2:obsDir”:保存,obsDir表示脏数据存储路径。 “1”:抛出异常。 “0”:忽略。 默认值为“0”。 udf_jar_url 否 String 用户已上传到DLI资源管理系统的资源包名,用户sql作业的udf jar通过该参数传入。 manager_cu_number 否 Integer 用户为作业选择的管理单元(jobmanager)CU数量,默认值为“1”。 tm_cus 否 Integer 每个taskmanager的CU数,默认值为“1”。 tm_slot_num 否 Integer 每个taskmanager的slot数,默认值为“(parallel_number*tm_cus)/(cu_number-manager_cu_number)”。 operator_config 否 String 算子的并行度配置。 resume_checkpoint 否 Boolean 异常重启是否从checkpoint恢复。 resume_max_num 否 Integer 异常重试最大次数,单位:次/小时。取值范围:-1或大于0。默认值为“-1”,表示无限次数。 static_estimator_config 否 String 每个算子的流量/命中率配置,json格式的字符串。例如: {"operator_list":[{"id":"0a448493b4782967b150582570326227","rate_factor":0.55},{"id":"6d2677a0ecc3fd8df0b72ec675edf8f4","rate_factor":1},{"id":"ea632d67b7d595e5b851708ae9ad79d6","rate_factor":0.55},{"id":"bc764cd8ddf7a0cff126f51c16239658","output_rate":2000}]} runtime_config 否 String Flink作业运行时自定义优化参数。 flink_version 否 String Flink版本。当前只支持1.10和1.12。
  • 响应消息 表6 响应参数 参数名称 是否必选 参数类型 说明 id 否 String 批处理作业的ID。 appId 否 String 批处理作业的后台app ID。 name 否 String 创建时用户指定的批处理名称,不能超过128个字符。 owner 否 String 批处理作业所属用户。 proxyUser 否 String 批处理作业所属代理用户(资源租户)。 state 否 String 批处理作业的状态,详细说明请参见表7。 kind 否 String 批处理作业类型,只支持spark类型参数。 log 否 Array of strings 显示当前批处理作业的最后10条记录。 sc_type 否 String 计算资源类型。用户自定义时返回CUSTOMIZED。 cluster_name 否 String 批处理作业所在队列。 queue 是 String 用于指定队列,填写已创建DLI的队列名。 说明: 兼容“cluster_name”参数,即如果使用“cluster_name”指定队列仍然有效。 推荐使用“queue”参数,“queue”参数与“cluster_name”参数两者不能同时存在。 image 否 String 自定义镜像 。格式为:组织名/镜像名:镜像版本。 当用户设置“feature”为“custom”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用自定义的Spark镜像。关于如何使用自定义镜像,请参考《 数据湖探索 用户指南》。 create_time 否 Long 批处理作业的创建时间。是单位为“毫秒”的时间戳。 update_time 否 Long 批处理作业的更新时间。是单位为“毫秒”的时间戳。 duration 否 Long 作业运行时长,单位毫秒。 表7 批处理作业状态说明 参数名称 参数类型 说明 starting String 批处理作业正在启动。 running String 批处理作业正在执行任务。 dead String 批处理作业已退出。 success String 批处理作业执行成功。 recovering String 批处理作业正在恢复。
  • 请求示例 创建Spark作业,作业的Spark主类为“org.apache.spark.examples.SparkPi”,指定程序包batchTest/spark-examples_2.11-2.1.0.luxor.jar,并加载上传到DLI类型为jar的程序号和类型为files的资源包。 { "file": "batchTest/spark-examples_2.11-2.1.0.luxor.jar", "className": "org.apache.spark.examples.SparkPi", "sc_type": "A", "jars": ["demo-1.0.0.jar"], "files": ["count.txt"], "resources":[ {"name": "groupTest/testJar.jar", "type": "jar"}, {"name": "kafka-clients-0.10.0.0.jar", "type": "jar"}], "groups": [ {"name": "groupTestJar", "resources": [{"name": "testJar.jar", "type": "jar"}, {"name": "testJar1.jar", "type": "jar"}]}, {"name": "batchTest", "resources": [{"name": "luxor.jar", "type": "jar"}]}], "queue": " test", "name": "TestDemo4", "feature": "basic", "spark_version": "2.3.2" } 其中“batchTest/spark-examples_2.11-2.1.0.luxor.jar”已提前通过上传分组资源(废弃)接口上传。
  • 响应示例 { "id": "07a3e4e6-9a28-4e92-8d3f-9c538621a166", "appId": "", "name": "", "owner": "test1", "proxyUser": "", "state": "starting", "kind": "", "log": [], "sc_type": "CUSTOMIZED", "cluster_name": "aaa", "queue": "aaa", "image": "", "create_time": 1607589874156, "update_time": 1607589874156 }
  • 请求消息 表2 请求参数 参数名称 是否必选 参数类型 说明 file 是 String 用户已上传到DLI资源管理系统的类型为jar或pyFile的程序包名。也支持指定OBS路径,例如:obs://桶名/包名。 className 是 String 批处理作业的Java/Spark主类。 queue 否 String 用于指定队列,填写已创建DLI的队列名。必须为通用类型的队列。 说明: 兼容“cluster_name”参数,即如果使用“cluster_name”指定队列仍然有效。 推荐使用“queue”参数,“queue”参数与“cluster_name”参数两者不能同时存在。 cluster_name 否 String 用于指定队列,填写已创建DLI队列的队列名称。 说明: 推荐使用“queue”参数,“queue”参数与“cluster_name”参数两者不能同时存在。 args 否 Array of Strings 传入主类的参数,即应用程序参数。 sc_type 否 String 计算资源类型,目前可接受参数A, B, C。如果不指定,则按最小类型创建。具体资源类型请参见表3。 jars 否 Array of Strings 用户已上传到DLI资源管理系统的类型为jar的程序包名。也支持指定OBS路径,例如:obs://桶名/包名。 pyFiles 否 Array of Strings 用户已上传到DLI资源管理系统的类型为pyFile的资源包名。也支持指定OBS路径,例如:obs://桶名/包名。 files 否 Array of Strings 用户已上传到DLI资源管理系统的类型为file的资源包名。也支持指定OBS路径,例如:obs://桶名/包名。 modules 否 Array of Strings 依赖的系统资源模块名,具体模块名可通过查询组内资源包(废弃)接口查看。 DLI系统提供了用于执行跨源作业的依赖模块,各个不同的服务对应的模块列表如下: CloudTable/ MRS HBase: sys.datasource.hbase CloudTable/MRS OpenTSDB: sys.datasource.opentsdb RDS MySQL: sys.datasource.rds RDS PostGre: 不需要选 DWS: 不需要选 CSS : sys.datasource.css resources 否 Array of Objects JSON对象列表,填写用户已上传到队列的类型为JSON的资源包名和类型。具体请见表4。 groups 否 Array of Objects JSON对象列表,填写用户组类型资源,格式详见请求示例。如果“resources”中的“name”未进行type校验,只要此分组中存在这个名字的包即可。具体请见表5。 conf 否 Object batch配置项,参考Spark Configuration。 name 否 String 创建时用户指定的批处理名称,不能超过128个字符。 driverMemory 否 String Spark应用的Driver内存,参数配置例如2G, 2048M。该配置项会替换“sc_type”中对应的默认参数,使用时必需带单位,否则会启动失败。 driverCores 否 Integer Spark应用Driver的CPU核数。该配置项会替换sc_type中对应的默认参数。 executorMemory 否 String Spark应用的Executor内存,参数配置例如2G, 2048M。该配置项会替换“sc_type”中对应的默认参数,使用时必需带单位,否则会启动失败。 executorCores 否 Integer Spark应用每个Executor的CPU核数。该配置项会替换sc_type中对应的默认参数。 numExecutors 否 Integer Spark应用Executor的个数。该配置项会替换sc_type中对应的默认参数。 obs_bucket 否 String 保存Spark作业的obs桶名,需要保存作业时配置该参数。 auto_recovery 否 Boolean 是否开启重试功能,如果开启,可在Spark作业异常失败后自动重试。默认值为“false”。 max_retry_times 否 Integer 最大重试次数。最大值为“100”,默认值为“20”。 feature 否 String 作业特性。表示用户作业使用的Spark镜像类型。 custom:表示使用用户自定义的Spark镜像。 spark_version 否 String 作业使用Spark组件的版本号。 如果当前Spark组件版本为2.3.2,则不填写该参数。 image 否 String 自定义镜像。格式为:组织名/镜像名:镜像版本。 当用户设置“feature”为“custom”时,该参数生效。用户可通过与“feature”参数配合使用,指定作业运行使用自定义的Spark镜像。关于如何使用自定义镜像,请参考《 数据湖 探索用户指南》。 catalog_name 否 String 访问元数据时,需要将该参数配置为dli。 表3 资源类型说明 资源类型 物理资源 driverCores executorCores driverMemory executorMemory numExecutor A 8核32G内存 2 1 7G 4G 6 B 16核64G内存 2 2 7G 8G 7 C 32核128G内存 4 2 15G 8G 14 表4 resources参数说明 参数名称 是否必选 参数类型 说明 name 否 String 资源名称。也支持指定OBS路径,例如:obs://桶名/包名。 type 否 String 资源类型。 表5 groups参数说明 参数名称 是否必选 参数类型 说明 name 否 String 用户组名称。 resources 否 Array of Objects 用户组资源。具体请参考表4。
  • 响应消息 表3 响应参数说明 参数名称 是否必选 参数类型 说明 is_success 否 Boolean 请求是否成功。 message 否 String 消息内容。 metrics 否 Object 作业列表信息。具体请参考表4。 表4 payload参数说明 参数名称 是否必选 参数类型 说明 jobs 否 Array of Objects 所有作业监控信息。具体请参考表5。 表5 jobs参数说明 参数名称 是否必选 参数类型 说明 job_id 否 Long 作业ID。 metrics 否 Object 作业的所有输入输出监控信息。具体请参考表6。 表6 metrics参数说明 参数名称 是否必选 参数类型 说明 sources 否 Array of Objects 所有输入流。请参见表7。 sinks 否 Array of Objects 所有输出流。请参见表7。 total_read_rate 否 Double 总输入速率。 total_write_rate 否 Double 总输出速率。 表7 source/sinks参数说明 参数名称 是否必选 参数类型 说明 name 否 String 输入流或输出流名称。 records 否 Long 总记录数。 corrupted_records 否 Long 脏数据记录数。
  • 示例 请求样例 { "job_ids": [298765, 298766] } 响应样例 { "is_success": true, "message": "消息内容", "metrics": { "jobs": [ { "job_id": 0, "metrics": { "sources": [ { "name": "Source: KafKa_6070_KAFKA_SOURCE", "records": 0, "corrupted_records": 0 } ], "sinks": [ { "name": "Source: KafKa_6070_KAFKA_SOURCE", "records": 0, "corrupted_records": 0 } ], "total_read_rate": 100, "total_write_rate": 100 } } ] } }
  • 请求示例 使用ID为100000的模板创建名为myjob的Flink SQL作业,该作业执行在testQueue队列上以独享的模式运行。 { "name": "myjob", "desc": "这是个做字符记数的作业", "template_id": 100000, "queue_name": "testQueue", "sql_body": "select * from source_table", "run_mode": "exclusive_cluster", "cu_number": 2, "parallel_number": 1, "checkpoint_enabled": false, "checkpoint_mode": "exactly_once", "checkpoint_interval": 0, "obs_bucket": "my_obs_bucket", "log_enabled": false, "restart_when_exception": false, "idle_state_retention": 3600, "job_type": "flink_sql_job", "dirty_data_strategy": "0", "udf_jar_url": "group/test.jar" }
  • 响应消息 表4 响应参数说明 参数名称 是否必选 参数类型 说明 is_success 否 String 执行请求是否成功。“true”表示请求执行成功。 message 否 String 消息内容。 job 否 Object 作业状态信息。具体请参考表5。 表5 job参数说明 参数名称 是否必选 参数类型 说明 job_id 是 Long 作业ID。 status_name 否 String 当前状态名称。参数说明可以参考查询作业详情中status作业状态字段说明。 status_desc 否 String 当前状态描述。包含异常状态原因及建议。