更新时间:2024-11-06 GMT+08:00

创建作业

功能介绍

此接口可以创建一个新作业,作业由一个或多个相互依赖的节点构成,支持Hive SQL、CDM Job等节点。DLF有两类型作业:批处理作业和实时作业。

URI

  • URI格式

    POST /v1/{project_id}/jobs

  • 参数说明
    表1 URI参数说明

    参数名

    是否必选

    参数类型

    说明

    project_id

    String

    项目编号,获取方法请参见项目ID和账号ID

请求参数

表2 请求Header参数

参数名

是否必选

参数类型

说明

workspace

String

工作空间id。

  • 如果不设置该参数,默认查询default工作空间下的数据。
  • 如果需要查询其他工作空间的数据,需要带上该消息头。
    说明:
    • 多个DataArts Studio实例需要指定工作空间。
    • 当工作空间里面没有default工作空间时,工作空间为必填参数,否则会报错。
表3 参数说明

参数名

是否必选

参数类型

说明

name

String

作业名称,只能包含六种字符:英文字母、数字、中文、中划线、下划线和点号,且长度小于等于128个字符。作业名称不能重复。

nodes

List<Node>

节点定义,参考表4

schedule

Schedule数据结构

调度配置,参考表5

params

List<Param>

作业参数定义,参考表6

directory

String

作业在目录树上的路径。创建作业时如果路径目录不存在,会自动创建目录,如/dir/a/,默认在根目录/。

processType

String

作业类型:

  • REAL_TIME:实时处理
  • BATCH:批处理

singleNodeJobFlag

Boolean

是否选择单任务,默认为false。

singleNodeJobType

String

单任务类型,作业类型为BATCH时类型可选择如下:

  • DLISQL
  • DWSSQL
  • HiveSQL
  • SparkSQL
  • RDSSQL

作业类型为REAL_TIME时类型可选择如下:FlinkSQL、FlinkJar、DLISpark。

lastUpdateUser

String

作业最后修改人。

logPath

String

作业运行日志存放的OBS路径。

basicConfig

BasicConfig数据结构

作业的基本信息,参考表29

emptyRunningJob

String

取值为0和1。1表示空跑。0表示取消空跑。不设置该参数时,默认为0。

targetStatus

String

在开启审批开关后,需要填写该字段。表示创建作业的目标状态,有三种状态:SAVED、SUBMITTED和PRODUCTION,分别表示作业创建后是保存态,提交态,生产态。

  • 保存态表示作业仅保存,无法调度运行,需要提交并审核通过后才能运行。
  • 提交态表示作业保存后会自动提交,需要审核通过才能运行。
  • 生产态表示作业跳过审批环节,创建后可以直接运行。注意:只有工作空间的管理员用户才能创建生产态的作业。

approvers

List<JobApprover>

在开启审批开关后,需要填写该字段,表示作业审批人,参考表33

表4 Node数据结构说明

参数名

是否必选

参数类型

说明

name

String

节点名称,只能包含六种字符:英文字母、数字、中文、中划线、下划线和点号,且长度小于等于128个字符。同一个作业中节点名称不能重复。

type

String

节点类型:

  • HiveSQL: 执行Hive SQL脚本
  • SparkSQL: 执行Spark SQL脚本
  • DWSSQL:执行DWS SQL脚本
  • DLISQL:执行DLI SQL脚本
  • Shell :执行Shell SQL脚本
  • CDMJob:执行CDM作业
  • DISTransferTask:创建DIS转储任务
  • CloudTableManager:CloudTable表管理,创建和删除表。
  • OBSManager:OBS路径管理,包括创建和删除路径。
  • RestClient:REST API请求
  • SMN:发送短信或邮件
  • MRSSpark:执行MRS服务的Spark作业
  • MapReduce:执行MRS服务的MapReduce作业
  • MRSFlinkJob: 执行MRS服务的FlinkJob作业。
  • MRSHetuEngine: 执行MRS服务的HetuEngine作业。
  • DLISpark:执行DLF服务的Spark作业
  • RDSSQL:传递SQL语句到RDS中执行。
  • ModelArts Train:执行ModelArts服务的workflow作业。
  • Dummy: 空节点作业类型

location

Location数据结构

节点在作业画布上的位置,参考表7

preNodeName

List<String>

本节点依赖的前面的节点名称列表。

conditions

List<Condition>

节点执行条件,如果配置此参数,本节点是否执行由condition的字段expression所保存的EL表达式计算结果决定,参考表8

properties

List<Property>

节点属性,参考表14

每种节点类型有自己的定义,如下:

  • Hive SQL:参考表15
  • Spark SQL:参考表16
  • DWS SQL : 参考表17
  • DLI SQL : 参考表18
  • Shell :参考表19
  • CDM Job: 参考表20
  • DIS TransferTask :参考表21
  • CloudTableManager :参考表22
  • OBSManager:参考表23
  • RestClient :参考表24
  • SMN :参考表25
  • MRS Spark: 参考表26
  • MapReduce:参考表27
  • DLI Spark :参考表28
  • MRS Flink:参考表30
  • MRS HetuEngine:参考表31
  • ModelArts Train:参考表32

pollingInterval

Int

轮询节点执行结果时间间隔。

单位 : 秒,取值范围[1, 60]

默认值: 10

execTimeOutRetry

String

节点是否超时重试,默认值为"false"。

maxExecutionTime

Int

节点最大执行时间,如果节点在最大执行时间内还未执行完成,会把节点置为失败状态。

单位 : 分钟,取值范围[5, 7200],说明:其他值实际无法生效。

默认值 : 60

retryTimes

Int

节点失败重试次数。取值范围[1, 100]。

默认值 : 1

retryInterval

Int

失败重试时间间隔。取值范围[5, 600]

单位 : 秒

默认值 : 120

failPolicy

String

节点失败策略:

  • FAIL:终止当前作业执行计划
  • IGNORE:继续执行下一个节点
  • SUSPEND:挂起当前作业执行计划
  • FAIL_CHILD: 终止后续节点执行计划

    默认值是FAIL。

eventTrigger

Event数据结构

实时作业节点事件触发配置,参考表11

cronTrigger

Cron数据结构

实时作业节点Cron触发配置,参考表9

表5 Schedule数据结构说明

参数名

是否必选

参数类型

说明

type

String

调度类型。

  • EXECUTE_ONCE:作业立即运行,只运行一次。
  • CRON:作业按指定频率周期执行。
  • EVENT: 根据事件触发执行。

cron

数据结构

当type为CRON时,配置调度频率、启动时间等信息,参考表10

event

数据结构

当type为EVENT时,配置事件源等信息,参考表11

表6 Param数据结构说明

参数名

是否必选

参数类型

说明

name

String

参数名称,只能包含英文字母、数字、中划线和下划线。不能超过64个字符。

value

String

参数值,不能超过1024个字符。

type

String

参数类型。

  • variable:变量
  • constants:常量

    默认值 : variable

表7 Location数据结构说明

参数名

是否必选

参数类型

说明

x

Int

节点在作业画布上的横轴位置。

y

Int

节点在作业画布上的纵轴位置。

表8 condition数据结构说明

参数名

是否必选

参数类型

说明

preNodeName

String

本节点依赖的前一个节点名称。

expression

String

EL表达式,如果EL表达式的计算结果为true,则触发执行本节点。

表9 CronTrigger数据结构说明

参数名

是否必选

参数类型

说明

startTime

String

调度开始时间,采用ISO 8601时间表示方法,格式为yyyy-MM-dd'T'HH:mm:ssZ,例如2018-10-22T23:59:59+08表示的时间为2018年10月22日23时59分59秒,在正8区。

endTime

String

调度结束时间,采用ISO 8601时间表示方法,格式为yyyy-MM-dd'T'HH:mm:ssZ,例如2018-10-22T23:59:59+08表示的时间为2018年10月22日23时59分59秒,在正8区。如果结束时间不配置,作业会按照调度周期一直执行下去。

expression

String

Cron表达式,格式为"<秒> <分> <时> <天> <月> <星期>",每个字段允许的输入值参考表12

expressionTimeZone

String

Cron表达式对应的时区信息,例如GMT+8。

默认值:使用DataArts Studio服务端所在的时区。

period

String

用于描述运行的间隔时间,格式为时间+时间单位。

例如:"1 hours","1 days","1 weeks","1 months"

需要与expression中的表达式对应。

dependPrePeriod

Boolean

是否依赖本作业上一个运行周期任务的执行结果。

默认值 : false

dependJobs

DependJobs数据结构

依赖其它作业配置,参考表13

concurrent

Integer

支持并发执行数量

表10 Cron数据结构说明

参数名

是否必选

参数类型

说明

startTime

String

调度开始时间,采用ISO 8601时间表示方法,格式为yyyy-MM-dd'T'HH:mm:ssZ,例如2018-10-22T23:59:59+08表示的时间为2018年10月22日23时59分59秒,在正8区。

endTime

String

调度结束时间,采用ISO 8601时间表示方法,格式为yyyy-MM-dd'T'HH:mm:ssZ,例如2018-10-22T23:59:59+08表示的时间为2018年10月22日23时59分59秒,在正8区。如果结束时间不配置,作业会按照调度周期一直执行下去。

expression

String

Cron表达式,格式为"<秒> <分> <时> <天> <月> <星期>",每个字段允许的输入值参考表12

expressionTimeZone

String

Cron表达式对应的时区信息,例如GMT+8。

默认值:使用DataArts Studio服务端所在的时区。

dependPrePeriod

Boolean

是否依赖本作业上一个运行周期任务的执行结果。

默认值 : false

dependJobs

DependJobs数据结构

依赖其它作业配置,参考表13

表11 Event数据结构说明

参数名

是否必选

参数类型

说明

eventType

String

选择对应的连接名称与topic,当有新的kafka消息时将会触发作业运行一次

配置为:KAFKA

事件类型,当前只支持监听DIS通道的新上报数据事件,每上报一条数据,触发作业运行一次。

配置为:DIS

选择要监听的OBS路径,如果该路径下有新增文件,则触发调度;新增的文件的路径名,可以通过变量Job.trigger.obsNewFiles引用。前提条件:该OBS路径已经配置DIS消息通知。

配置为:OBS

channel

String

DIS通道名称。

通过DIS管理控制台获取通道名称:

  1. 登录管理控制台。
  2. 单击“数据接入服务”,左侧列表选择“通道管理”。
  3. 通道管理页面中列出了用户拥有的通道。

failPolicy

String

执行失败处理策略:

  • SUSPEND :挂起
  • IGNORE:忽略失败,读取下一事件

默认值 : SUSPEND

concurrent

int

调度并发数

取值范围:1~128

默认值:1

readPolicy

String

读取策略:

  • LAST :从上次位置读取
  • NEW- 从最新位置读取

默认值 : LAST

表12 Cron表达式字段取值

字段

取值范围

允许的特殊字符

说明

0-59

, - * /

当前版本只允许输入0。

0-59

, - * /

-

0-23

, - * /

-

1-31

, - * ? / L W C

-

1-12

, - * /

当前版本只允许输入*。

星期

1-7

, - * ? / L C #

从星期日开始算起。

表13 DependJobs数据结构说明

参数名

是否必选

参数类型

说明

jobs

List<String>

依赖的作业名称列表,必须依赖已存在的作业。

dependPeriod

String

依赖周期:

  • SAME_PERIOD :依赖被依赖作业的同周期任务的执行结果。
  • PRE_PERIOD :依赖被依赖作业的前一周期任务的执行结果。

默认值 : SAME_PERIOD

dependFailPolicy

String

依赖作业任务执行失败处理策略:

  • FAIL:停止作业,设置作业为失败状态
  • IGNORE:继续执行作业
  • SUSPEND : 挂起作业

默认值 : FAIL

表14 Property属性说明

参数名

是否必选

参数类型

说明

name

String

属性名称

value

String

属性值

表15 Hive SQL节点属性说明

参数名

是否必选

参数类型

说明

scriptName

String

脚本名称

database

String

数据库名称

MRS Hive中的数据库,默认default。

connectionName

String

连接名称

scriptArgs

String

脚本参数,key、value形式,多个参数间用\n分隔,例如key1=value1\nkey2=value2

表16 Spark SQL节点属性说明

参数名

是否必选

参数类型

说明

scriptName

String

脚本名称

database

String

数据库名称

MRS Spark SQL中的数据库,默认default。

connectionName

String

连接名称

scriptArgs

String

脚本参数,key、value形式,多个参数间用\n分隔,例如key1=value1\nkey2=value2

表17 DWS SQL节点属性说明

参数名

是否必选

参数类型

说明

scriptName

String

脚本名称

database

String

数据库名称

DWS服务中的数据库,默认postgres。

connectionName

String

连接名称

scriptArgs

String

脚本参数,key、value形式,多个参数间用\n分隔,例如key1=value1\nkey2=value2

表18 DLI SQL节点属性说明

参数名

是否必选

参数类型

说明

scriptName

String

脚本名称

database

String

数据库名称

DLI服务中数据库。

connectionName

String

连接名称

scriptArgs

String

脚本参数,key、value形式,多个参数间用\n分隔,例如key1=value1\nkey2=value2

表19 Shell节点属性说明

参数名

是否必选

参数类型

说明

scriptName

String

脚本名称

connectionName

String

连接名称

arguments

String

Shell脚本参数

表20 CDM Job节点属性说明

参数名

是否必选

参数类型

说明

clusterName

String

集群名称。

通过DataArts Studio管理控制台 > 数据集成,在批量数据迁移集群列表可以获取到集群名称。

jobName

String

作业名称。

通过DataArts Studio管理控制台 > 数据集成,在批量数据迁移集群列表单击对应的集群管理,进入后在作业管理中获取作业名称。

表21 DISTransferTask节点属性说明

参数名

是否必选

参数类型

说明

streamName

String

DIS通道名称

通过DIS管理控制台获取通道名称:

  1. 登录管理控制台。
  2. 单击“数据接入服务”,左侧列表选择“通道管理”。
  3. 通道管理中列出了用户拥有的通道。

destinationType

String

转储目标:

  • CloudTable
  • OBS

duplicatePolicy

String

转储任务重名处理策略:

  • OVERWRITE : 覆盖
  • IGNORE :忽略

configuration

数据结构

转储配置,参考的 obs_destination_descriptor参数说明和cloudtable_destination_descriptor参数说明。

表22 CloudTableManager节点属性说明

参数名

是否必选

参数类型

说明

namespace

String

命名空间

默认值:default

action

String

动作类型:

  • CREATE_TABLE : 创建表
  • DELETE_TABLE : 删除表

table

String

表名

columnFamily

String

列族

表23 OBSManager节点属性说明

参数名

是否必选

参数类型

说明

action

String

动作类型:

  • CREATE_PATH : 创建OBS路径
  • DELETE_PATH : 删除OBS路径

path

String

OBS路径

表24 RestClient节点属性说明

参数名

是否必选

参数类型

说明

url

String

URL地址

云服务提供的URL地址。

method

String

HTTP方法:

  • GET
  • POST
  • PUT
  • DELETE

headers

String

HTTP消息头,每个消息头的格式为<消息头名称>=<值>,多个消息头之间使用换行符分割。

body

String

消息体

表25 SMN节点属性说明

参数名

是否必选

参数类型

说明

topic

String

SMN主题URN

通过SMN管理控制台获取SMN主题URN:

  1. 登录管理控制台。
  2. 单击“消息通知服务”,左侧列表选择“主题管理 > 主题”。

在主题列表中可以获取到SMN主题URN。

subject

String

消息标题,给邮箱订阅者发送邮件时作为邮件主题。

messageType

String

消息类型

  • NORMAL
  • STRUCTURE
  • TEMPLATE

message

String

发送的消息。

表26 MRS Spark节点属性说明

参数名

是否必选

参数类型

说明

clusterName

String

MRS集群名称

通过MRS管理控制台获取集群名称:

  1. 登录管理控制台。
  2. 单击“MapReduce服务”,左侧列表单击“集群列表 > 现有集群”。

在现有列表中可以获取到集群名称。

jobName

String

MRS作业名称

用户自定义。

resourcePath

String

自定义Spark Jar包OBS资源路径

parameters

String

Spark Jar包自定义参数

对于开发的自定义Jar包,可以在此处对参数进行输入替换

input

String

输入路径

MRS Spark作业输入数据路径,可以为HDFS或者是OBS路径。

output

String

输出路径

MRS Spark作业输出数据路径,可以为HDFS或者是OBS路径。

programParameter

String

运行程序参数

允许多个key:value,多个参数要用竖线隔开。

表27 MapReduce节点属性说明

参数名

是否必选

参数类型

说明

clusterName

String

MRS集群名称

通过MRS管理控制台获取集群名称:

  1. 登录管理控制台。
  2. 单击“MapReduce服务”,左侧列表单击“集群列表 > 现有集群”。

在现有列表中可以获取到集群名称。

jobName

String

MRS作业名称

用户自定义。

resourcePath

String

资源路径

parameters

String

MapReduce作业参数

input

String

输入路径

MapReduce作业输入数据路径,可以为HDFS或者是OBS路径。

output

String

输出路径

MapReduce作业输出数据路径,可以为HDFS或者是OBS路径。

表28 DLI Spark节点属性说明

参数名

是否必选

参数类型

说明

clusterName

String

DLI队列名称

通过DLI管理控制台获取队列名称:

  1. 登录管理控制台。
  2. 单击“数据湖探索服务”,单击“队列管理”

在队列管理列表中可以获取到队列名称。

jobName

String

DLI作业名称

通过DLI管理控制台获取作业名称:

  1. 登录管理控制台。
  2. 单击“数据湖探索服务”,单击Spark作业。
  3. 选择“作业管理”

在作业管理列表中可以获取到作业名称。

resourceType

String

DLI作业运行资源类型,可选

1. OBS路径: OBS

2. DLI程序包: DLIResources

jobClass

String

主类名称。当应用程序类型为“.jar”时,主类名称不能为空。

resourcePath

String

JAR包资源路径

jarArgs

String

主类入口参数

sparkConfig

String

Spark作业运行参数

表29 BasicConfig作业基本信息说明

参数名

是否必选

参数类型

说明

owner

String

作业责任人,长度不能超过128个字符。

agency

String

作业委托的名称

isIgnoreWaiting

int

实例超时是否忽略等待时间,取值范围为0和1,默认值为1

0:表示实例超时不忽略等待时间

1:表示实例超时忽略等待时间

priority

int

作业优先级,取值范围[0, 2],默认值是0。0代表高优先级,1代表中优先级,2代表低优先级。

executeUser

String

作业执行用户,必须是已存在的用户名。

instanceTimeout

int

实例超时时间,单位是分钟,取值范围 [5, 1440],默认值是60

customFields

Map<String,String>

用户自定义字段,长度不能超过2048个字符。

表30 MRS Flink节点属性说明

参数名

是否必选

参数类型

说明

clusterName

String

MRS集群名称

通过MRS管理控制台获取集群名称:

  1. 登录管理控制台。
  2. 单击“MapReduce服务”,左侧列表单击“集群列表 > 现有集群”。

在现有列表中可以获取到集群名称。

jobName

String

MRS作业名称

用户自定义。

flinkJobType

String

客户选择是FLink SQL作业或Flink JAR作业。

flinkJobProcessType

String

客户选择批处理模式或流处理模式。

scriptName

String

客户选择Flink SQL关联的SQL脚本。

resourcePath

String

自定义Flink Jar包OBS资源路径

input

String

输入路径

MRS Flink作业输入数据路径,可以为HDFS或者是OBS路径。

output

String

输出路径

MRS Flink作业输出数据路径,可以为HDFS或者是OBS路径。

programParameter

String

运行程序参数

允许多个key:value,多个参数要用竖线隔开。

表31 MRS HetuEngine节点属性说明

参数名

是否必选

参数类型

说明

clusterName

String

MRS集群名称

通过MRS管理控制台获取集群名称:

  1. 登录管理控制台。
  2. 单击“MapReduce服务”,左侧列表单击“集群列表 > 现有集群”。

在现有列表中可以获取到集群名称。

jobName

String

MRS作业名称

用户自定义。

statementOrScript

String

选择使用SQL语句和关联SQL脚本。

scriptName

String

选择关联的SQL脚本。

statement

String

自定义的SQL内容。

Data Warehouse

String

指定HetuEngine服务所需数据连接。

Schema

String

使用HetuEngine服务所要访问的数据源schema名称。

Database

String

使用HetuEngine服务所要访问的数据源database名称。

Queue

String

使用HetuEngine服务所需资源队列名称。

表32 ModelArts Train节点属性说明

参数名

是否必选

参数类型

说明

clusterName

String

MRS集群名称。

通过MRS管理控制台获取集群名称:

  1. 登录管理控制台。
  2. 单击“MapReduce服务”,在左侧列表单击“MRS集群 > 现有集群”。

在现有列表中可以获取到集群名称。

jobName

String

MRS作业名称。

用户可自定义。

statementOrScript

String

选择使用SQL语句和关联SQL脚本。

scriptName

String

选择关联的SQL脚本。

表33 审批人属性说明

参数名

是否必选

参数类型

说明

approverName

String

审批人名称。

响应参数

请求示例

创建一个作业名称为myJob的作业,作业类型为BATCH,作业调度配置为CRON,作业在目录树上的路径为/myDir,作业运行日志存放的OBS路径为obs://dlf-test-log

POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs
{
    "basicConfig": {
        "customFields": {},
        "executeUser": "",
        "instanceTimeout": 0,
        "owner": "test_user",
        "priority": 0
    },
    "directory": "/myDir",
    "logPath": "obs://dlf-test-log",
    "name": "myJob",
    "nodes": [
        {
            "failPolicy": "FAIL_CHILD",
            "location": {
                "x": "-45.5",
                "y": "-134.5"
            },
            "maxExecutionTime": 360,
            "name": "MRS_Hive_SQL",
            "pollingInterval": 20,
            "preNodeName": [],
            "properties": [
                {
                    "name": "scriptName",
                    "value": "test_hive_sql"
                },
                {
                    "name": "connectionName",
                    "value": "mrs_hive_test"
                },
                {
                    "name": "database",
                    "value": "default"
                },
                {
                    "name": "scriptArgs",
                    "value": "test_var=111"
                }
            ],
            "retryInterval": 120,
            "retryTimes": 0,
            "type": "HiveSQL"
        }
    ],
    "processType": "BATCH",
    "schedule": {
        "type": "CRON"
    }
}

开启审批开关的情况下,创建作业的示例。

POST /v1/b384b9e9ab9b4ee8994c8633aabc9505/jobs
{
    "basicConfig": {
        "customFields": {},
        "executeUser": "",
        "instanceTimeout": 0,
        "owner": "test_user",
        "priority": 0
    },
    "directory": "/myDir",
    "logPath": "obs://dlf-test-log",
    "name": "myJob",
    "nodes": [
        {
            "failPolicy": "FAIL_CHILD",
            "location": {
                "x": "-45.5",
                "y": "-134.5"
            },
            "maxExecutionTime": 360,
            "name": "MRS_Hive_SQL",
            "pollingInterval": 20,
            "preNodeName": [],
            "properties": [
                {
                    "name": "scriptName",
                    "value": "test_hive_sql"
                },
                {
                    "name": "connectionName",
                    "value": "mrs_hive_test"
                },
                {
                    "name": "database",
                    "value": "default"
                },
                {
                    "name": "scriptArgs",
                    "value": "test_var=111"
                }
            ],
            "retryInterval": 120,
            "retryTimes": 0,
            "type": "HiveSQL"
        }
    ],
    "processType": "BATCH",
    "schedule": {
        "type": "CRON"
    },
    "targetStatus":"SUBMITTED",
    "approvers": [
        {
            "approverName": "userName1"
        },
        {
            "approverName": "userName2"
        }
    ]
}

响应示例

  • 成功响应

    HTTP状态码 204

  • 失败响应

    HTTP状态码 400

    {
        "error_code":"DLF.0102",
        "error_msg":"The job name already exists."
    }