OpenAPI开发文档
实时计算OpenAPI
此手册用于记录有数大数据开发与管理平台中,实时计算产品所有对外开放的OpenAPI,阅读此手册,你将了解实时计算产品开放的OpenAPI能力与调用方法。
文档编辑历史
版本 | 日期 | 编辑人 | 变更内容 |
---|---|---|---|
V1.0.0 | 2022-01-13 | 创建文档 |
一 公共参数
1.1 响应格式
名称 | 类型 | 描述 |
---|---|---|
code | Number | 响应码:非0表示失败。 |
reqId | String | 请求ID |
msg | String | 响应消息 |
result | Object | 响应结果 |
cost | Number | 耗时 |
1.2 响应码(1000~9999)
响应码 | 描述 |
---|---|
1000 | openapi请求参数为空! |
1001 | 请求参数必须extends OpenapiBaseRequest |
1002 |
参数[{}]不能为空 |
1003 |
获取用户[{}]信息失败 |
1004 |
用户[{}]不存在 |
1005 |
获取产品信息失败,产品[{}]! |
1006 |
用户[{}]产品列表为空 |
1007 |
用户[{}]不在产品里, 产品[{}]! |
1008 |
产品[{}]不存在 |
1009 |
任务名重复 |
1010 |
目录[{}],不存在 |
1011 |
该引擎类型不存在,或者没有入库[{}] |
1012 |
目录[{}]格式有问题 |
1013 |
目录[{}]创建失败 |
1014 |
目录深度超过两层 |
1015 |
JAR包不存在 |
1016 |
任务不存在 |
1017 |
发布失败,错误原因:[{}] |
1018 |
文件已存在 |
1019 |
文件格式只能是*.jar, *.xml, *.proto, *.keytab, *.conf |
1.3 公共枚举定义
1.3.1 EngineTypeEnum
枚举值 | 类型 | 名称 |
---|---|---|
FLINK1_10 | String | flink引擎版本1.10 |
FLINK1_12_0 | String | flink引擎版本1.12 |
FLINK1_13 | String | flink引擎版本1.13 |
FLINK1_14 | String | flink引擎版本1.14 |
1.3.2 startMode
枚举值 | 类型 | 名称 |
---|---|---|
FROM_LAST_CHECKPOINT | String | 从最近的checkpoint启动 |
FROM_LAST_SAVEPOINT | String | 从最近的savepoint启动 |
FROM_PATH | String | 从指定的路径启动 |
NONE | String | 直接启动 |
1.4 查询实体列表
1.4.1 JobConfig
运行参数配置
字段说明:
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
clusterName | String | 集群名称 | 是 | |
queueName | String | 队列名称 | 是 | |
slots | int | slot | 否 | 1 |
tmMemory | int | tm内存:单位M | 否 | 2048 |
jmMemory | int | jm内存:单位M | 否 | 2048 |
paralleism | int | 并发数 | 否 | 1 |
checkpointSwitch | boolean | cp开关 | 否 | False 关闭 |
checkpointInterval | int | cp间隔:单位s | 否 | 30 |
checkpointMode | CheckpointMode | cp模式 | 否 | EXACTLY_ONCE |
checkpointTimeout | int | cp超时时间 | 否 | 30 |
stateBackend | StateBackend | 存储介质 | 否 | hdfs |
restartStrategy | RestartStrategy | 重启策略 | 否 | fixed-delay |
restartAttempts | int | 重启失败次数 | 否 | 10 |
restartDelay | int | 重试时间间隔 | 否 | 10 |
restartInterval | int | 重启时间范围 | 否 | 300 |
extendConfig | Map |
flink高级配置 | 否 |
1.4.2 CheckpointMode
名称 | 类型 | 描述 |
---|---|---|
EXACTLY_ONCE | String | 至多一次 |
AT_LEAST_ONCE | String | 至少一次 |
1.4.3 StateBackend 存储介质
名称 | 类型 | 描述 |
---|---|---|
hdfs | String | hdfs |
rocksdb | String | rocksdb |
1.4.4 RestartStrategy 重启策略
名称 | 类型 | 描述 |
---|---|---|
fixed-delay |
String | 固定间隔,如果超过最大尝试次数,作业会最终失败,在连续两次重启尝试之间等待固定的时间 |
failure-rate |
String |
在失败之后重新启动作业,但是当超过故障率时,作业最终会失败。在连续两次重启尝试之间等待固定时间。 |
如果没有启用 checkpointing,则使用无重启 (no restart) 策略。 如果启用了 checkpointing,但没有配置重启策略,则使用固定间隔 (fixed-delay) 策略 fixed-delay 需要传入重启失败次数和重试时间间隔 failure-rate 需要传入 重启失败次数、重启时间范围、重试时间间隔 |
---|
1.4.5 StartJobInfo
任务启动参数配置
字段说明:
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
jobId | int | 任务id | 是 | |
startMode | startMode | 启动任务的方式,枚举类型 | 否 | NONE |
statePath | String | 状态路径 | 否 |
1.4.6 StopJobInfo
任务停止参数配置
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
jobId | int | 任务id | 是 | |
triggerSavepoint | boolean | 是否触发savepoint保存 | 否 |
1.4.7 RestartJobInfo
任务重启参数配置
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
jobId | int | 任务id | 是 | |
startMode | startMode | 启动任务的方式,枚举类型 | 否 | NONE |
statePath | String | 状态路径 | 否 | |
triggerSavepoint | boolean | 是否触发savepoint保存 | 否 |
1.4.8 AlarmInfo
告警信息配置
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
emails | Array |
告警用户信息 | 否 | null |
receiveTypes | Array |
告警方式的接收类型: 1:邮箱;4:短信 5:电话;6:企业微信 |
是 | null |
alarmRules | Array |
告警规则详细描述 | 是 | null |
alarmGroupId | int | 告警接收组id,如sloth开发组 | 否 | null |
pausingInterval | int | 全局告警抑制时间 | 否 | null |
pausingEnable | boolean | 是否开启告警抑制 | 是 | false |
alarmEnable | boolean | 是否开启告警 | 是 | true |
1.4.9 AlarmRule
告警规则
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
metricType | String | 告警指标类型: failover data_retention_latency:数据滞留延迟 job_failed:任务失败 input_qps:输入QPS output_qps:输出QPS failed_checkpoint:checkpoint失败次数 user_defined_latency:用户自定义延迟 record_lag:滞留数据量 backpressure:反压 |
是 | |
metricName | String | 告警指标名称 | 否 | -1 |
cycleTime | int | 单个统计周期的时长:(任务失败不支持配置) 1:1分钟周期 5:5分钟周期 10:10分钟周期 15:15分钟周期 20:20分钟周期 25:25分钟周期 30:30分钟周期 |
是 | |
alarmInterval | int | 报警间隔时长,单位:分钟 | 是 | |
suppressOperator | String | 单个统计周期内的运算符:(仅支持用户自定义延迟) >=:大于等于 |
否 | -1 |
cycleNum | String | 连续多少个统计周期: 1:连续1个周期 3:连续3个周期 5:连续5个周期 |
否 | -1 |
threshold | String | 定义的多个统计周期内告警阈值:(任务失败不支持配置) | 否 | -1 |
suppressThreshold | String | 单个统计周期内告警阈值:(仅支持用户自定义延迟) | 是 | |
statisticsType | String | 聚合类型: max:最大值 avg:平均值 sum:总和 |
否 | -1 |
operator | String | 定义的多个统计周期内运算符:(任务失败不支持配置) >=:大于等于 <:小于 |
是 | -1 |
1.4.10 JobStatusEnum 任务运行状态
名称 | 枚举值 | 任务状态 |
---|---|---|
JobStatus |
STARTING | 启动中 |
START_FAILED | 启动失败 | |
RUNNING | 运行中 | |
FINISHED | 任务执行结束,并正确的退出 | |
FAILED | 任务因为异常运行失败 | |
STOPPING | 停止中 | |
STOPPED | 已停止 | |
UNKNOWN | 未知(无法访问集群) |
1.5 响应实体列表
1.5.1 JobBasicInfo
名称 | 类型 | 描述 |
---|---|---|
jobId | int | 任务id |
jobName | String | 任务名称 |
jarInfo | JarInfo | 对Jar任务的描述 |
jobType | String boolean | 任务类型 |
rawSql | String | SQL文本信息 |
udfList | ResourceFileSimpleInfo | 依赖的udf信息 |
fileList | ResourceFileSimpleInfo | 依赖的文件信息 |
creator | String | 任务的创建者 |
createTime | String | 任务的创建时间 |
publisher | String | 任务的发布人 |
env | int | 环境id |
category | int | 任务所属目录id |
tags | Array |
任务的标签信息 |
description | String | 任务的描述信息 |
lastStartJobExecHistoryId | int | 最后一次启动任务的执行id |
startExecId | int | 任务的启动id |
lastClusterId | int | 任务所属的集群id |
jobStatus | String | 任务的运行状态 |
applicationId | String | 对应flink任务id |
flinkUrl | String | Flink web URL |
monitorUrl | String | 任务的Grafana监控地址 |
1.5.2 ResourceFileSimpleInfo
名称 | 类型 | 描述 |
---|---|---|
id | int | 依赖资源id |
name | String | 依赖资源名称 |
path | String | 依赖资源的绝对路径 |
udfName | String | udf函数名称(udf独有) |
二、OpenAPI列表
2.1 OpenAPI总览
模块 | 名称 | 支持版本 | 状态 | 请求方法 | 请求路径 |
---|---|---|---|---|---|
任务管理 | 新建SQL任务 | v3.9.1 | 已上线 | POST | /job/v1/sql/create |
修改SQL任务 | v3.9.1 | 已上线 | POST | /job/v1/sql/modify | |
删除任务 | v3.9.1 | 已上线 | POST | /job/v1/delete | |
获取任务信息 | v3.9.1 | 已上线 | POST | /job/v1/detail | |
启动任务 | v3.9.1 | 已上线 | POST | /job/v1/start | |
停止任务 | v3.9.1 | 已上线 | POST | /job/v1/stop | |
重启任务 | v3.9.1 | 已上线 | POST | /job/v1/restart | |
获取任务当前状态 | v3.9.1 | 已上线 | POST | /job/v1/status |
2.1 新建SQL 任务
POST /job/v1/sql/create
版本:3.9.1
描述:创建SQL类型的任务
URL参数/请求体
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
user | String | 用户邮箱 | 是 | |
product | String | 产品名称 | 是 | |
jobName | String | 任务名称 | 是 | |
engineType | EngineTypeEnum | 引擎类型,枚举值 | 是 | |
folderPath |
String |
保存的文件夹路径,为空:位于根目录,格式:aa/bb,最多支持两级目录 | 否 | |
rawSql | String | sql语句,sql最好传入\n用于分隔 | 是 | |
description | String | 任务描述 | 否 | |
dependencyIds | Array |
依赖文件id列表 | 否 | |
udfIds | Array |
依赖的Udf id列表 | 否 | |
jobConfig | JobConfig | 任务配置参数 | 是 | |
alarmInfo | AlarmInfo | 告警配置 | 否 | 默认配置 |
请求示例:
| Prolog
{
“jobName”: “jarName”,
“engineType”: “FLINK1_12_0”,
“folderPath”: “/aaa/bbb”,
“rawSql”: “this is sql”,
“description”: “jar job description”,
“dependencyIds”: [
1,
2,
4
],
“udfIds”: [
1,
3,
4
],
“jobConfig”: {},
“alarmInfo”: {},
“user”: “yangxiaohang@corp.netease.com”,
“product”: “sloth”
} |
| —- |
返回示例:
名称 | 类型 | 描述 |
---|---|---|
jobId | Integer | 新创建任务的id |
2.2 修改SQL任务
POST /job/v1/sql/modify
版本:3.9.1
描述:修改SQL类型的任务
URL参数/请求体
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
user | String | 用户邮箱 | 是 | |
product | String | 产品名称 | 是 | |
jobId | String | 任务id | 是 | |
engineType | EngineTypeEnum | 引擎类型,枚举值 | 是 | |
folderPath |
String |
保存的文件夹路径,为空:位于根目录,格式:aa/bb,最多支持两级目录 | 否 | |
rawSql | String | sql语句,需要传入分割符 | 是 | |
description | String | 任务描述 | 否 | |
dependencyIds | Array |
依赖文件id列表 | 否 | |
udfIds | Array |
依赖的Udf id列表 | 否 | |
jobConfig | JobConfig | 任务配置参数 | 否 | |
alarmInfo | AlarmInfo | 告警配置 | 否 | 不传不会修改 |
请求示例:
JSON { “jobId”: “104722”, “jobName”: “sqlOpenApiTest3”, “engineType”: “FLINK1_10”, “folderPath”: “”, “rawSql”: “— nabab\n set ‘user_action.connections.group.id’ = ‘test_group_id’;\nset ‘user_action.connector.startup-mode’ = ‘latest-offset’;\nset ‘tempTable.connector.topic’=’kafka_sink’;\nset ‘tempTable.format.type’ = ‘json’;\ninsert into sloth_autotest_kafka_eleven.mem.tempTable\nselect * from sloth_default_db.user_action;”, “description”: “Test2”, “dependencyIds”: [10], “udfIds”: [26], “jobConfig”: { “clusterName”: “sloth-internal-test”, “queueName”: “root.sloth” }, “user”: “yangxiaohang@corp.netease.com”, “product”: “sloth”, “authType”: “TEST” } |
---|
返回示例:
JSON { “code”: 0, “msg”: “success”, “result”:null, “requestId”:null, “reqId”:null, “cost”: 2072, “success”: true } |
---|
2.3 删除任务
POST /job/v1/delete
版本:3.9.1
描述:删除调用方传入的任务列表
URL参数/请求体:
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
user | String | 用户邮箱 | 是 | |
product | String | 产品名称 | 是 | |
jobIds | String | 待删除的任务id集合,支持传入多个任务,任务id间用逗号分割 | 是 |
请求示例:
JSON { “user”: “wanglei20@corp.netease.com”, “product”: “sloth”, “jobIds”: “1000074” } |
---|
响应体:
JSON { “code”: 0, “msg”: “success”, “result”: 1354, “requestId”: dcaf583d, “success”:true } |
---|
2.4 获取任务信息
POST /job/v1/detail
版本:3.9.1
描述:获取最新版本任务信息
URL参数/请求体:
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
user | String | 用户邮箱 | 是 | |
product | String | 产品名称 | 是 | |
jobId | int | 任务id | 是 |
请求示例:
JSON { “user”: “wanglei20@corp.netease.com”, “product”: “sloth”, “jobId”: 1000056 } |
---|
响应体:
JSON { “code”: 0, “msg”: “success”, “result”: { “jobBasicInfo”: { “jobId”: 1000056, “jobName”: “测试任务2-rename”, “jarInfo”: { “jarName”: “”, “jarPath”: “”, “mainClass”: “”, “mainArgs”: “”, “jarVersion”: “” }, “jobType”: “SQL”, “rawSql”: “[{\“cellType\“:\“flink.sql\“,\“enable\“:true,\“key\“:\“743a695f-9099-11ec-ad7c-fa163ea49987\“,\“source\“:[\“—SQL\“,\“—********************************************************************—\“,\“—Author: 杨晓航\“,\“—CreateTime: 2021-12-09 15:57:41\“,\“—Comment: 请输入业务注释信息\“,\“—********************************************************************—\“,\“CREATE TABLE user_log (\“,\“user_id VARCHAR,\“,\“item_id VARCHAR,\“,\“category_id VARCHAR,\“,\“behavior VARCHAR,\“,\“ts VARCHAR\“,\“) WITH (\“,\“‘connector’ = ‘datagen’\“,\“— , ‘number-of-rows’ = ‘10’\“,\“);\“,\“\“,\“create table print_table WITH (‘connector’ = ‘print’)\“,\“LIKE user_log (EXCLUDING ALL);\“,\“\“,\“insert into print_table\“,\“select * from user_log;\“],\“title\“:\“SQL\“}]“, “udfList”: [ { “id”: 11378, “name”: “changeId”, “path”: “/sloth/sloth/RESOURCE/dirid_200458/original-sloth-udf-1.0.1_1596533529506_1609405318875_1623849633571/1623849633599/original-sloth-udf-1.0.1_1596533529506_1609405318875_1623849633571.jar”, “udfName”: “changeId” } ], “fileList”: [], “creator”: “yangxiaohang@corp.netease.com”, “createTime”: “2021-12-09T07:57:41.000+0000”, “publisher”: “yangxiaohang@corp.netease.com”, “env”: 381, “category”: 351, “tags”: [], “description”: “hffg”, “lastStartJobExecHistoryId”: 2745, “startExecId”: 2036, “lastClusterId”: 1, “jobStatus”: “FAILED”, “applicationId”: “”, “flinkUrl”: “http://sloth-test2.dg.163.org:8088/proxy/application\_1645065290019\_0491/#/overview“, “monitorUrl”: “http://sloth.bdms.netease.com/grafana/d/rZuGINgWk/sloth?orgId=1&var-jobAppKey=1000056&var-jobSource=sloth&from=1648028948000&to=1648696837704“ } }, “requestId”: dcaf583d, “success”:true } |
---|
响应体描述:
名称 | 类型 | 描述 |
---|---|---|
jobBasicInfo | JobBasicInfo | 任务的基本信息 |
2.5 启动任务
POST /job/v1/start
版本:3.9.1
描述:启动调用方传入的任务
URL参数/请求体:
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
user | String | 用户邮箱 | 是 | |
product | String | 产品名称 | 是 | |
jobInfos | Array[StartJobInfo](https://as9e2kjei0.feishu.cn/docs/doccnmlWpU6CwjNUSVmMs5IN4uh#RdHi0o)\ | 任务的启动信息 |
是 |
请求示例:
JSON { “user”: “wanglei20@corp.netease.com”, “product”: “sloth”, “jobInfos”: [ { “jobId”: 1000074, “startMode”: “NONE”, “statePath”: “” } ] } |
---|
响应体:
JSON { “code”: 0, “msg”: “success”, “result”: { “results”: [ { “jobId”: 1000074, “jobName”: “testOpenApi”, “isSuccess”: true, “errorMessage”: “” } ] }, “requestId”: “914abf5efc64444d92f92418e3c9840c”, “success”:true } |
---|
2.6 停止任务
POST /job/v1/stop
版本:3.9.1
描述:停止调用方传入的任务
URL参数/请求体:
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
user | String | 用户邮箱 | 是 | |
product | String | 产品名称 | 是 | |
jobInfos | Array[StopJobInfo](https://as9e2kjei0.feishu.cn/docs/doccnmlWpU6CwjNUSVmMs5IN4uh#fVRUrb)\ | 任务的停止信息 | 是 |
请求示例:
JSON { “user”: “wanglei20@corp.netease.com”, “product”: “sloth”, “jobInfos”: [ { “jobId”: 1000096, “triggerSavepoint”:false } ] } |
---|
响应体:
JSON { “code”: 0, “msg”: “success”, “result”: { “results”: [ { “jobId”: 1000096, “jobName”: “sqlOpenApiTest3”, “isSuccess”:true, “errorMessage”: “” } ] }, “requestId”: “9483bdc3f6d84be7a74f26cb78bd4b6a”, “success”:true } |
---|
2.7 重启任务
POST /job/v1/restart
版本:3.9.1
描述:重新启动调用方传入的任务
URL参数/请求体:
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
user | String | 用户邮箱 | 是 | |
product | String | 产品名称 | 是 | |
jobInfos | Array[RestartJobInfo](https://as9e2kjei0.feishu.cn/docs/doccnmlWpU6CwjNUSVmMs5IN4uh#c5HM5Q)\ | 任务的重启信息 | 是 |
请求示例:
JSON { “user”: “wanglei20@corp.netease.com”, “product”: “sloth”, “jobInfos”: [ { “jobId”: 1000096, “startMode”: “NONE”, “statePath”: “”, “triggerSavepoint”:false } ] } |
---|
响应体:
JSON { “code”: 0, “msg”: “success”, “result”: { “results”: [ { “jobId”: 1000096, “isSuccess”:true, “errorMessage”: “” } ] }, “requestId”: “19cd594800684549aa420e100f241fc5”, “success”:true } |
---|
2.7 获取任务当前状态
POST /job/v1/status
版本:3.9.1
描述:批量获取调用方传入任务的当前状态信息
URL参数/请求体:
名称 | 类型 | 描述 | 是否必传 | 默认值 |
---|---|---|---|---|
user | String | 用户邮箱 | 是 | |
product | String | 产品名称 | 是 | |
jobIds | String | 待查询的任务id集合,支持传入多个任务,任务id间用逗号分割 | 是 |
请求示例:
JSON { “user”: “wanglei20@corp.netease.com”, “product”: “sloth”, “jobIds”: “100056” } |
---|
响应体:
| JSON
{
“code”: 0,
“msg”: “success”,
“result”: {
“jobStatusList”: [
{
“jobId”: “1000056”,
“jobStatus”: “FAILED”
}
]
},
“requestId”: dcaf583d,
“success”:true
} |
| —- |
以上内容对您是否有帮助?