- 调用方式
- API 接收地址
- API 返回内容
- 数据源相关接口
- 创建批量计算数据源
- 更新批量计算数据源
- 根据名称查看批量计算数据源
- 列举批量计算数据源
- 根据名称删除批量计算数据源
- 批量计算任务相关接口
- 创建批量计算任务
- 更新批量计算任务
- 列举批量计算任务信息
- 获取单个批量计算任务信息
- 启动批量计算任务
- 停止批量计算任务
- 删除批量计算任务信息
- 获取数据源schema
- 批量计算任务导出接口
- 导出数据至云存储
- 导出数据至 HDFS
- 导出数据至 HTTP 地址
- 导出数据至日志检索服务
- 导出数据至时序数据库服务
- 导出数据至报表平台
- 更新导出任务
- 按照名称查看导出任务
- 列举导出任务
- 按照名称删除导出任务
- 查看历史批量计算任务
- 停止批次任务
- 重跑批次任务
- 魔法变量接口
- 创建魔法变量
- 更新魔法变量
- 根据名称查看魔法变量
- 列举魔法变量
- 根据名称删除魔法变量
- 错误代码及相关说明
调用方式
API 接收地址
https://pipeline.qiniu.com
API 返回内容
响应报文
- 如果请求成功,返回 HTTP 状态码
200:
HTTP/1.1 200 OK
- 如果请求失败,返回包含如下内容的 JSON 字符串(已格式化,便于阅读):
{"error": "<errMsg string>"}
- 如果请求包含数据获取,则返回相应数据的 JSON 字符串;
数据源相关接口
创建批量计算数据源
请求语法
POST /v2/datasources/<DataSourceName>Content-Type: application/jsonAuthorization: Pandora <auth>{"region": <Region>,"type": <Type>,"spec": <Spec>,"noVerifySchema": <NoVerifySchema>,"workflow": <WorkflowName>,"schema": [{"key": <Key>,"valtype": <ValueType>,"required": <Required>},...]}
参数说明
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| DataSourceName | string | 是 | 数据源名称 命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$1-128个字符,支持小写字母、数字、下划线 必须以大小写字母或下划线开头 |
| region | string | 是 | 计算与存储所使用的物理资源所在区域 目前仅支持“nb”(华东区域) |
| type | string | 是 | 数据源类型,可选值为[kodo,hdfs,fusion] |
| spec | json | 是 | 指定该数据源自身属性相关的信息 |
| noVerifySchema | bool | 否 | 是否推断数据源,默认值为false。当值为true时,会使用用户填写的schema,不会主动触发推断schema操作 |
| workflowName | string | 否 | 指定当前数据源所属的工作流名称,且该工作流必须提前创建 |
| schema | array | 是 | 字段信息 |
| schema.key | string | 是 | 字段名称 命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$1-128个字符,支持小写字母、数字、下划线 必须以大小写字母或下划线开头 |
| schema.valtype | string | 是 | 字段类型 目前仅支持: boolean:布尔类型long:整型date:RFC3339日期格式float:64位精度浮点型string:字符串 |
| schema.required | bool | 是 | 是否必填 用户在传输数据时 key字段是否必填 |
当 type 为hdfs的时候 spec 定义如下:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| spec.paths | array | 是 | 包含一个或者多个hdfs文件路径 例如: hdfs://192.168.1.1:9000/usr/local可以使用系统默认魔法变量,下文中详解 |
| spec.fileType | string | 是 | 文件类型,合法取值为json、csv、text和parquet |
| spec.delimiter | string | 否 | csv文件分割符,当文件类型为csv时,delimiter为必填项 |
| spec.containsHeader | bool | 否 | csv文件是否包含header标志,当文件类型为csv时,containsHeader为必填项 |
当type为kodo的时候 spec 定义如下:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| spec.bucket | string | 是 | 对象存储数据中心名称, 命名规则:4-63个字符,支持字母、数字、中划线 |
| spec.keyPrefixes | array | 否 | 包含一个或者多个文件前缀; 命名规则:0-128个字符,不支持英文 \、<、>符号 |
| spec.fileType | string | 是 | 文件类型,合法取值为json、csv、text和parquet |
| spec.delimiter | string | 否 | csv文件分割符,当文件类型为csv时,delimiter为必填项 |
| spec.containsHeader | bool | 否 | csv文件是否包含header标志,当文件类型为csv时,containsHeader为必填项 |
当type为fusion的时候 spec 定义如下:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| spec.domains | array | 是 | 融合cdn的域名(目前仅支持单域名) |
| spec.fileFilter | string | 否 | CDN文件过滤规则 命名规则:0-64个字符 最终的文件地址是’文件前缀+文件过滤规则’ 请注意过滤规则不要和文件前缀有重复. 注:当数据源为fusion时,支持2种类型的文件过滤表达式(1:固定时间范围,精确到年月日小时。如果2017-06-01 05:00 ~ 2017-07-01 05:00 2.相对时间范围: 设置魔法变量 fiveDaysAgo = $(now) - 5d 则fileFilter可以写为 $(fiveDaysAgo) ~ $(now) 范围:五天前到当前调度时间。) |
!> 注意:region参数的选择以降低传输数据的成本为原则,请尽量选择离自己数据源较近的区域。
更新批量计算数据源
请求语法
PUT /v2/datasources/<DataSourceName>Content-Type: application/jsonAuthorization: Pandora <auth>{"spec": <Spec>,"schema": [{"key": <Key>,"valtype": <ValueType>,"required": <Required>},...]}
!> 注意: 更新批量计算数据源字段信息的时候,不允许减少字段,也不允许更改字段的类型。
根据名称查看批量计算数据源
请求语法
GET /v2/datasources/<DataSourceName>Authorization: Pandora <auth>
响应报文
{"region": <Region>,"type": <Type>,"spec": <Spec>,"schema": [{"key": <Key>,"valtype": <ValueType>,"required": <Required>},...]}
列举批量计算数据源
请求语法
GET /v2/datasourcesAuthorization: Pandora <auth>
响应报文
{"datasources": [{"name": <DataSourceName>,"region": <Region>,"type": <Type>,"spec": <Spec>,"schema": [{"key": <Key>,"valtype": <ValueType>,"required": <Required>},...]},...]}
根据名称删除批量计算数据源
请求语法
DELETE /v2/datasources/<DataSourceName>Authorization: Pandora <auth>
批量计算任务相关接口
创建批量计算任务
请求语法
POST /v2/jobs/<JobName>Content-Type: application/jsonAuthorization: Pandora <auth>{"srcs":[{"name":<DataSourceName|JobName>,"type":<DataSource|Job>,"tableName": <TableName>},...],"computation": {"code": <Code>,"type": <SQL>},"container": {"type": <ContainerType>,"count": <ContainerCount>},"scheduler":{"type": <crontab|loop|manual|depend>,"spec": {"crontab": <0 0 0/1 * *>,"loop": <1h|3m|....>}},"params":[{"name":<ParamName>,"default":<ParamValue>},...]}
参数说明
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| srcs | array | 是 | 数据来源 |
| srcs.name | string | 是 | 数据源名称或离线任务名称 |
| srcs.type | string | 是 | 数据来源节点类型 |
| srcs.tableName | string | 是 | 数据来源的表名称 命名规则:1-128个字符,支持字母、数字、下划线,必须以字母开头 |
| computation | object | 是 | 计算方式 |
| computation.code | string | 是 | 代码片段,可以使用魔法变量 |
| computation.type | string | 是 | 代码类型,支持SQL |
| container | map | 是 | 计算资源 |
| container.type | string | 是 | 规格,目前支持:1U2G ,1U4G,2U4G,4U8G,4U16G ,8U16G ,8U32G ,16U32G,16U64G |
| container.count | int | 是 | 数量,所选规格 * 数量 <= 100U |
| scheduler | map | 是 | 调度 |
| scheduler.type | string | 是 | 调度方式,定时、循环或单次执行三选一,下游任务是依赖模式 |
| scheduler.spec.crontab | string | 否 | 定时执行,当调度方式选择为’定时’,此项必填;必须为crontab类型 |
| scheduler.spec.loop | string | 否 | 循环执行,当调度方式选择为’循环’,此项必填; 其值以 m(分钟)和h(小时)为单位,由数字与单位组成,例如:5m |
| params | array | 否 | 魔法变量,系统默认自带6个魔法变量:$(year)=当前年份、$(mon)=当前月份、$(day)=当前日期、$(hour)=当前小时、$(min)=当前分钟、$(sec)=当前秒数;用户也可以自行定义魔法变量 |
| params.name | string | 是 | 变量名称,命名规则:1-64个字符,支持大小写字母、数字、下划线,大小写字母或下划线开头 |
| params.default | string | 是 | 默认值,命名规则:0-64个字符 |
scheduler.type 为 depend 的时候,container 依赖上游的配置,该配置不填
scheduler.type 为 manual 和 depend 的时候 spec 可以不填
scheduler.type 为 loop时,不填该 spec.loop 或者该字段为 0,则默认持续运行该任务
scheduler.type 为 depend 的时候,params 依赖上游的配置,该配置不填
!> 注1:scheduler.type 如果是 depend 模式,代表这个离线任务依赖某个上游的离线任务。首先 srcs 内有且仅有一个离线任务数据源。同时该任务不能指定调度的模式、魔法变量和容器规格。这些全部使用上游依赖的离线任务。
!> 注2:srcs.tableName 在此任务的 srcs 中以及依赖的所有上游任务的 srcs 中不能重复。
文件前缀+文件过滤规则举例说明:
文件前缀:
audit-log/xxx-log-文件过滤规则:
$(year)-$(mon)-$(day)最终的文件地址为:
audit-log/xxx-log-2017-06-01
更新批量计算任务
请求语法
PUT /v2/jobs/<JobName>Content-Type: application/jsonAuthorization: Pandora <auth>{"srcs":[{"name":<DataSourceName|JobName>,"fileFilter":<fileFilter>,"type":<DataSource|Job>,"tableName": <TableName>},...],"computation": {"code": <Code>,"type": <SQL>},"container": {"type": <ContainerType>,"count": <ContainerCount>},"scheduler":{"type": <crontab|loop|manual|depend>,"spec": {"crontab": <0 0 0/1 * *>,"loop": <1h|3m|....>}},"params":[{"name":<ParamName>,"default":<ParamValue>},...]}
!> 注意:更新时候 srcs, code, container, scheduler, params 校验逻辑和创建的时候相同。下游计算任务不指定container, scheduler, params。更新逻辑为全量更新。需要提前获取所有信息。
列举批量计算任务信息
请求语法
GET /v2/jobs?srcDatasource=[DataSourceName]&srcJob=[JobName]Authorization: Pandora <auth>
响应报文
{"jobs":[{"name": <JobName>,"srcs":[{"name":<DataSourceName|JobName>,"fileFilter":<fileFilter>,"type":<DataSource|Job>,"tableName": <TableName>},...],"scheduler":{"type": <crontab|loop|manual|depend>,"spec": {"crontab": <0 0 0/1 * *>,"loop": <1h|3m|....>}},"computation": {"code": <Code>,"type": <SQL>},"container": {"type": <ContainerType>,"count": <ContainerCount>},"params":[{"name":<ParamName>,"default":<ParamValue>},...],"schema": [{"key": <Key>,"valtype": <ValueType>},...]},...]}
参数说明
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| srcDatasource | string | 否 | 依赖离线数据源名字 |
| srcJob | string | 否 | 依赖离线计算任务名字 |
!> 注意: srcDataSource 和 srcJob 不能同时存在。当两个参数都不指定的时候列举出所有的离线计算任务。
获取单个批量计算任务信息
请求语法
GET /v2/jobs/<JobName>Content-Type: application/jsonAuthorization: Pandora <auth>
响应报文
{"srcs":[{"name":<DataSourceName|JobName>,"fileFilter":<fileFilter>,"type":<DataSource|Job>,"tableName": <TableName>},...],"scheduler":{"type": <crontab|loop|manual|depend>,"spec": {"crontab": <0 0 0/1 * *>,"loop": <1h|3m|....>}},"computation": {"code": <SqlCode>,"type": <SQL>},"container": {"type": <ContainerType>,"count": <ContainerCount>},"params":[{"name":<ParamName>,"default":<ParamValue>},...],"schema": [{"key": <Key>,"valtype": <ValueType>},...]}
启动批量计算任务
请求语法
POST /v2/jobs/<JobName>/actions/startAuthorization: Pandora <auth>{"params":[{"name":<ParamName>,"value":<ParamValue>},...]}
参数说明
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| params | array | 否 | 定义运行时的魔法参数值 |
| params.name | string | 是 | 魔法变量名字 |
| params.value | string | 是 | 运行时魔法变量值 |
停止批量计算任务
请求语法
POST /v2/jobs/<JobName>/actions/stopAuthorization: Pandora <auth>
删除批量计算任务信息
请求语法
DELETE /v2/jobs/<JobName>Authorization: Pandora <auth>
获取数据源schema
请求语法
POST /v2/schemasContent-Type: application/jsonAuthorization: Pandora <auth>{"type": <Kodo|HDFS|Fusion>,"spec": <Spec>}
参数说明
Type 为 Kodo 时,Spec结构:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| spec.bucket | string | 是 | 对象存储的存储空间 |
| spec.keyPrefixes | array | 否 | 一个或者多个文件前缀 |
| spec.fileType | string | 是 | 文件类型,合法取值为json, parquet, text |
Type 为 HDFS 时,Spec 结构:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| spec.paths | array | 是 | 一个或者多个文件路径 |
| spec.fileType | string | 是 | 文件类型,合法取值为json, parquet, text |
Type为 Fusion 时,Spec 为空结构体.
响应内容
json or parquet return :{"schema": [{"key": <Key>,"valtype": <ValueType>},...]}text return :{"schema": [{"key": <text>,"valtype": <String>},...]}
批量计算任务导出接口
导出数据至云存储
请求语法
POST /v2/jobs/<JobName>/exports/<ExportName>Content-Type: application/jsonAuthorization: Pandora <auth>{"type": <kodo>,"spec": {"bucket": <Bucket>,"keyPrefix": <Prefix|Path>,"format": <ExportFormat>,"delimiter": <Delimiter>,"containsHeader":<True|False>"compression": <compression>,"retention": <Retention>,"partitionBy": <PartitionBy>,"fileCount": <FileCount>,"saveMode": <SaveMode>}}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 导出的类型,目前允许的值为”kodo” |
| bucket | string | 是 | 对象存储bucket名称 |
| keyPrefix | string | 否 | 导出的文件名的前缀,当离线任务的scheduler是manual的时候,就是文件名命名规则:0-128个字符,不支持英文 : 、\、<、>符号 |
| format | string | 否 | 文件导出格式,支持json、csv、text、orc、parquet五种类型 |
| delimiter | string | 否 | csv文件分割符,当文件类型为csv时,delimiter为必填项 |
| containsHeader | bool | 否 | csv文件是否包含header标志,当文件类型为csv时,containsHeader为必填项 |
| compression | string | 否 | 压缩类型, 具体支持类型与format值相关,详见注1 |
| retention | int | 否 | 数据储存时限,以天为单位,当不大于0或该字段为空时,则永久储存 |
| partitionBy | array | 否 | 指定作为分区的字段,为一个字符数组,合法的元素值是字段名称 |
| fileCount | int | 是 | 计算结果导出的文件数量,应当大于0,小于等于1000 |
| saveMode | string | 否 | 计算结果的保存模式:overwrite(默认) 文件已经存在则覆盖掉, append 在已有的文件上追加,errorIfExists 文件已经存在的时候报错误,ignore 文件已经存在 则认为跑成功了,不报错 |
!> 注1: 当用户指定format为json、csv或text时, compression仅支持none(不压缩)、bzip2, gzip, lz4, snappy和deflate; 当用户指定format为orc时, compression仅支持none(不压缩)、snappy, zlib和lzo; 当用户指定format为parquet时, compression仅支持none(不压缩)、snappy, gzip和lzo。
!> 注2: keyPrefix字段表示导出文件名称的前缀,该字段可选,默认值为””(生成文件名会自动加上时间戳格式为yyyy-MM-dd-HH-mm-ss),如果使用了一个或者多个魔法变量时不会自动添加时间戳,支持魔法变量,采用$(var)的形式求值,目前可用的魔法变量var如下:
year上传时的年份mon上传时的月份day上传时的日期hour上传时的小时min上传时的分钟sec上传时的秒钟
导出数据至 HDFS
请求语法
POST /v2/jobs/<JobName>/exports/<ExportName>Content-Type: application/jsonAuthorization: Pandora <auth>{"type": <hdfs>,"spec": {"path": <path_to_write>,"format": <ExportFormat>,"delimiter": <Delimiter>,"compression": <compression>,"partitionBy": <PartitionBy>,"fileCount": <FileCount>,"saveMode": <SaveMode>}}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 导出的类型,目前允许的值为”kodo” |
| path | string | 是 | 导出的路径。例如:hdfs://192.168.1.1:9000/usr/local;命名规则:0-128个字符,不支持英文 \、<、>符号 |
| format | string | 否 | 文件导出格式,支持,json、csv、text、orc、parquet五种类型 |
| delimiter | string | 否 | csv文件分割符,当文件类型为csv时,delimiter为必填项 |
| compression | string | 否 | 压缩类型, 具体支持类型与format值相关,详见注1 |
| partitionBy | array | 否 | 指定作为分区的字段,为一个字符数组,合法的元素值是字段名称 |
| fileCount | int | 是 | 计算结果导出的文件数量,应当大于0,小于等于1000 |
| saveMode | string | 否 | 计算结果的保存模式:overwrite(默认) 文件已经存在则覆盖掉, append 在已有的文件上追加,errorIfExists 文件已经存在的时候报错误,ignore 文件已经存在 则认为跑成功了,不报错 |
!> 注1: 当用户指定format为json、csv或text时, compression仅支持none(不压缩)、bzip2, gzip, lz4, snappy和deflate; 当用户指定format为orc时, compression仅支持none(不压缩)、snappy, zlib和lzo; 当用户指定format为parquet时, compression仅支持none(不压缩)、snappy, gzip和lzo。
!> 注2: path字段支持魔法变量,采用$(var)的形式求值,目前可用的魔法变量var如下:
year上传时的年份mon上传时的月份day上传时的日期hour上传时的小时min上传时的分钟sec上传时的秒钟
导出数据至 HTTP 地址
请求语法
POST /v2/jobs/<JobName>/exports/<ExportName>Content-Type: application/jsonAuthorization: Pandora <auth>{"type": <http>,"spec": {"host": <Host>,"uri": <RequestURI>,"format": <ExportFormat>}}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| host | string | 是 | 服务器地址(ip或域名) 例如: https://pipeline.qiniu.com 或 127.0.0.1:7758 |
| uri | string | 是 | 请求资源路径(具体地址,不包含ip或域名) 例如: /test/repos |
| format | string | 否 | 导出方式 支持 text和json如果没有填写此项,默认为 text |
!> 注1: 当导出格式为text时,导出的服务端需要支持Content-Type(MimeType)为text/plain的请求; 当导出格式为json时,导出服务端需要支持Content-Type(MimeType)为application/json的请求。
!> 注2: text的导出数据格式为:Key1=Value1\tKey2=Value2\tKey3=Value3; json的导出数据格式为:{"Key1": Value1, "Key2": Value2, "Key3": Value3}。
导出数据至日志检索服务
请求语法
POST /v2/jobs/<JobName>/exports/<ExportName>Content-Type: application/jsonAuthorization: Pandora <auth>{"type": <logdb>,"spec": {"destRepoName": <DestRepoName>,"omitInvalid": <OmitInvalid>,"doc": {"LogdbRepoField1": <#JobField1>,"LogdbRepoField2": <#JobField2>,"LogdbRepoField3": <#JobField3>,......}}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| destRepoName | string | 是 | 日志仓库名称 |
| omitInvalid | bool | 否 | 是否忽略无效数据,默认值为 false |
| doc | map | 是 | 字段关系说明JobField表示离线Job的字段名称LogdbRepoField表示目标日志仓库字段名称 |
导出数据至时序数据库服务
请求语法
POST /v2/jobs/<JobName>/exports/<ExportName>Content-Type: application/jsonAuthorization: Pandora <auth>{"type": <tsdb>,"spec": {"destRepoName": <DestRepoName>,"omitInvalid": <OmitInvalid>,"series": <Series>,"tags": {"tag1": <#JobField1>,"tag2": <#JobField2>,...},"fields": {"field1": <#JobField3>,"field2": <#JobField4>,...},"timestamp": <#JobField5>}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| destRepoName | string | 是 | 日志仓库名称 |
| omitInvalid | bool | 否 | 是否忽略无效数据,默认值为 false |
| tags | map | 是 | 索引字段 |
| fields | map | 是 | 普通字段 |
| timestamp | string | 否 | 时间戳字段,JobField表示离线 Job 的字段名称 |
导出数据至报表平台
请求语法
POST /v2/jobs/<JobName>/exports/<ExportName>Content-Type: application/jsonAuthorization: Pandora <auth>{"type": <report>,"spec": {"dbName": <DBName>,"tableName": <TableName>,"columns": {"column1": <#JobField1>,"column2": <#JobField2>,"column3": <#JobField3>,...},"saveMode": <SaveMode>}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| dbName | string | 是 | 数据库名称 |
| tableName | bool | 是 | 数据表名称 |
| saveMode | string | 否 | 计算结果的保存模式:overwrite(默认) 默认重写整张表, append 在已有的表数据上追加数据。默认append模式 |
| columns | map | 是 | 字段关系说明JobField表示离线Job的字段名称columnN表示报表服务数据表字段名称 |
更新导出任务
请求语法
PUT /v2/jobs/<JobName>/exports/<ExportName>Content-Type: application/jsonAuthorization: Pandora <auth>{"spec": <Spec>}
按照名称查看导出任务
请求语法
GET /v2/jobs/<JobName>/exports/<ExportName>Authorization: Pandora <auth>
响应报文
{"type": <Type>,"spec": <Spec>}
列举导出任务
请求语法
GET /v2/jobs/<JobName>/exportsAuthorization: Pandora <auth>
响应报文
Content-Type: application/json{"exports": [{"name": <ExportName>,"type": <Type>,"spec": <Spec>},...]}
按照名称删除导出任务
请求语法
DELETE /v2/jobs/<JobName>/exports/<ExportName>Authorization: Pandora <auth>
查看历史批量计算任务
请求语法
GET /v2/jobs/<jobName>/history?page=1&size=20&sortBy=endTime&status=xx&runId=-1Content-Type: application/jsonAuthorization: Pandora <auth>
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | int | 否 | 分页页数 |
| size | int | 否 | 分页大小 |
| sortBy | string | 否 | 根据哪个字段排序, endTime代表按照字段升序排列,-endTime按照逆序排列 |
| status | string | 否 | |
| runId | int | 否 | 查询某个运行批次的状态,-1代表最近一次 |
响应报文
{"total": <TotalCnt>, # 总共运行批次"history":[{"runId" : <RunId>, # 运行批次"batchTime": "<batchTime>", #批次时间,每个批次第一次被调度的时间,是不可变的。"startTime": <StartTime>,"endTime": <EndTime>,"duration": <Duration>,"status": <Ready、Successful、Failed、Running、Canceled>,"message": <Message>},]}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| total | int | 是 | 总运行批次次数 |
| history | array | 是 | 运行历史 |
| history.runId | int | 是 | 运行批次 |
| history.batchTime | string | 是 | 批次时间 |
| history.startTime | string | 否 | 启动时间 |
| history.endTime | string | 否 | 终止事件,如果为Running,则为当前时间 |
| history.duration | int | 否 | 批次运行时间,单位秒 |
| history.status | string | 否 | |
| history.message | string | 否 | 运行、出错信息,比如运行成功、内存溢出、数据损坏 |
停止批次任务
请求语法
POST /v2/batch/actions/stopContent-Type: application/jsonAuthorization: Pandora <auth>{"jobName": "<jobName>","runId": "<runId>"}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| jobName | string | 是 | job名称 |
| runId | string | 是 | 待操作的运行批次ID |
响应报文
{"preStatus": "Running","postStatus": "Canceled"}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| preStatus | string | 是 | 停止前状态 |
| postStatus | string | 是 | 停止后状态 |
状态说明
| 状态 | 说明 | 备注 |
|---|---|---|
| Ready | 就绪 | 不允许停止操作 |
| Successful | 成功 | 不允许停止操作 |
| Failed | 失败 | 不允许停止操作 |
| Running | 运行中 | 允许停止操作 |
| Canceled | 已停止 | 不允许停止操作 |
| Restarting | 重启中 | 用于重启中间状态,不允许任何操作 |
| Cancelling | 停止中 | 用于停止中间状态,不允许任何操作 |
重跑批次任务
请求语法
POST /v2/batch/actions/rerunContent-Type: application/jsonAuthorization: Pandora <auth>{"jobName": "<jobName>","runId": "<runId>"}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| jobName | string | 是 | job名称 |
| runId | string | 是 | 待操作的运行批次ID |
响应报文
{"preStatus": "Failed","postStatus": "Running","rerunCount": 2}
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| preStatus | string | 是 | 重跑前状态 |
| postStatus | string | 是 | 重跑后状态 |
| rerunCount | int | 是 | 重跑次数 |
状态说明
| 状态 | 说明 | 备注 |
|---|---|---|
| Ready | 就绪 | 不允许重跑 |
| Successful | 成功 | 允许重跑 |
| Failed | 失败 | 允许重跑 |
| Running | 运行中 | 不允许重跑(请先停止) |
| Canceled | 已停止 | 允许重跑 |
| Restarting | 重启中 | 用于重启中间状态,不允许任何操作 |
| Cancelling | 停止中 | 用于停止中间状态,不允许任何操作 |
魔法变量接口
创建魔法变量
请求语法
POST /v2/variables/<VariableName>Content-Type: application/jsonAuthorization: Pandora <auth>{"type": <Type>,"value": <Value>,"format": <Format>,}
参数说明
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| VariableName | string | 是 | 魔法变量名称 命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$1-128个字符,支持小写字母、数字、下划线 必须以大小写字母或下划线开头 |
| type | string | 是 | 魔法变量类型,可选值为time和string,其中time类型表示该变量的取值与当前时间有关,如$(now)-5h,其中h表示小时,也支持d和m,分别表示天和分钟 |
| value | string | 是 | 魔法变量值,如time类型变量可为$(now)-5h;string类型常量可为2017-01-01 |
| format | string | 可选 | 仅当type为time时需要填写,表示指定的时间格式,如yyyy-MM-dd HH |
!> 备注:系统默认可用的魔法变量如下:
year表示type为time;value为当前年份;format为yyyy, 如2017mon表示type为time;value为当前月份;format为MM, 如01day表示type为time;value为当前日期;format为dd, 如01hour表示type为time;value为当前小时;format为HH, 如00min表示type为time;value为当前分钟;format为mm, 如00sec表示type为time;value为当前秒数;format为ss, 如00date表示type为time;value为当前秒数;format为yyyy-MM-dd, 如2017-01-01now表示type为time;value为当前时间;format为yyyy-MM-dd HH, 如
ss2017-01-01 00:00:00
更新魔法变量
请求语法
PUT /v2/variables/<VariableName>Content-Type: application/jsonAuthorization: Pandora <auth>{"type": <Type>,"value": <Value>,"format": <Format>}
根据名称查看魔法变量
请求语法
GET /v2/variables/<VariableName>Authorization: Pandora <auth>
响应报文
{"name": <Name>,"type": <Type>,"value": <Value>,"format": <Format>}
列举魔法变量
请求语法
GET /v2/variables?type=<Type>Authorization: Pandora <auth>
响应报文
{"variables": [{"name": <VariableName>,"type": <Type>,"value": <Value>,"format": <Format>},...]}
!> 注意:请求url中type参数仅支持system和user, 分别表示列举出系统内置变量和用户本身以创建变量。
根据名称删除魔法变量
请求语法
DELETE /v2/variables/<VariableName>Authorization: Pandora <auth>
错误代码及相关说明
| 错误码 | 错误描述 |
|---|---|
| 500 | 服务器内部错误 |
| 411 | E18003: 缺少内容长度 |
| 400 | E18004: 无效的内容长度 |
| 413 | E18005: 请求实体过大 |
| 400 | E18006: 请求实体为空 |
| 400 | E18007: 请求实体格式非法 |
| 400 | E18008: 字段长度超过限制 |
| 409 | E18101: 仓库已经存在 |
| 404 | E18102: 仓库不存在 |
| 400 | E18103: 无效的仓库名称 |
| 400 | E18104: 无效的日期格式 |
| 400 | E18105: 仓库Schema为空 |
| 400 | E18106: 无效的字段名称 |
| 400 | E18107: 不支持的字段类型 |
| 400 | E18108: 源仓库数量超过限制 |
| 400 | E18109: 无效的仓库模式 |
| 400 | E18110: 无效的字段格式 |
| 404 | E18111: 字段不存在 |
| 400 | E18112: 仓库上存在着级联的转换任务或者导出任务 |
| 409 | E18113: 仓库处于删除状态中 |
| 400 | E18117: Plugin名称不合法 |
| 404 | E18120: 共享资源池不存在 |
| 404 | E18122: 导出的仓库在logd中不存在 |
| 202 | E18124: 仓库处于创建中 |
| 400 | E18125: 读取gzip的打点请求体出错 |
| 409 | E18201: 计算任务已经存在 |
| 404 | E18202: 计算任务不存在 |
| 415 | E18203: 计算任务类型不支持 |
| 409 | E18204: 计算任务的源仓库与目的仓库相同 |
| 409 | E18205: 目的仓库已经被其他转换任务占用 |
| 400 | E18206: 目的仓库必须通过删除计算任务的方式删除 |
| 400 | E18207: 计算任务描述格式非法 |
| 400 | E18208: 计算任务interval非法 |
| 400 | E18209: 计算任务中的SQL语句非法 |
| 400 | E18211: 计算任务中plugin输出字段类型非法 |
| 400 | E18212: 仓库的区域信息和数据中心不相符 |
| 400 | E18213: 计算任务中容器类型非法 |
| 400 | E18214: 计算任务中容器数量非法 |
| 409 | E18215: 共享资源池处于使用中 |
| 404 | E18216: Plugin不存在 |
| 409 | E18217: Plugin已存在 |
| 409 | E18218: 共享资源池已存在 |
| 400 | E18219: Plugin上传内容长度不一致 |
| 400 | E18220: Plugin上传内容的MD5不一致 |
| 400 | E18221: 共享资源池名称非法 |
| 400 | E18222: 共享资源池的区域信息不一致 |
| 400 | E18223: 不能向计算任务的目标仓库中打点 |
| 409 | E18301: 导出任务已经存在 |
| 404 | E18302: 导出任务不存在 |
| 400 | E18303: 提交导出任务失败 |
| 400 | E18304: 删除导出任务失败 |
| 400 | E18305: 导出任务出现错误 |
| 401 | bad token:鉴权不通过 、token已过期、机器时间未同步 |
| 400 | E18639: 工作流名称不合法 |
| 409 | E18640: 工作流已存在 |
| 404 | E18641: 工作流不存在 |
| 400 | E18642: 工作流的格式非法 |
| 400 | E18644: 当前工作流禁止启动 |
| 400 | E18645: 当前工作流禁止停止 |
