• 沒有找到結果。

5.2 作业管理接口

5.2.1 新增并执行作业

状态码

状态码 描述

200 正常响应示例。

错误码

请参见错误码。

5.2 作业管理接口

5.2.1 新增并执行作业

功能介绍

在MRS集群中新增并提交一个作业。

需要先在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM 用户同步,然后再通过该接口提交作业。

如需使用OBS加密功能,请先参考“MRS用户指南 > 管理现有集群 > 作业管理 > 使用 OBS加密数据运行作业”页面进行相关配置后,再调用API接口运行作业。

所有示例中涉及的OBS路径、样例文件及终端节点和AKSK,请提前准备并在提交请求 时根据实际情况替换。

接口约束

调试

您可以在API Explorer中调试该接口。

URI

POST /v2/{project_id}/clusters/{cluster_id}/job-executions

5-15 路径参数

参数 是否必选 参数类型 描述

project_id 是 String 项目编号。获取方法,请参见获 取项目ID。

cluster_id 是 String 集群ID。获取方法,请参见获取 集群ID。

请求参数

5-16 请求 Body 参数

参数 是否必选 参数类型 描述

job_type 是 String 作业类型:

● MapReduce

● SparkSubmit

● SparkPython:该类型作业 将转换为SparkSubmit类型 提交,MRS控制台界面的作 业类型展示为

SparkSubmit,通过接口查 询作业列表信息时作业类型 请选择SparkSubmit。

● HiveScript

● HiveSql

● DistCp,导入、导出数据。

● SparkScript

● SparkSql

● Flink

● FlinkSql

job_name 是 String 作业名称,只能由字母、数字、

中划线和下划线组成,并且长度 为1~64个字符。

说明: 不同作业的名称允许相 同,但不建议设置相同。

参数 是否必选 参数类型 描述 arguments 否 Array of

strings 程序执行的关键参数,该参数由 用户程序内的函数指定,MRS只 负责参数的传入。 最多为 150000字符,不能包含;|&>'<

$!"\特殊字符,可为空。 说明:

● 若输入带有敏感信息(如登 录密码)的参数可能在作业 详情展示和日志打印中存在 暴露的风险,请谨慎操作。

● 提交HiveScript或HiveSql类 型的作业时如需以“obs://”

开头格式访问存储在OBS上 的文件,请在Hive服务配置 页面搜索参数

“core.site.customized.confi gs”,新增OBS的endpoint 配置项,参数为

“fs.obs.endpoint”,值请 输入OBS对应的endpoint,

具体请参考终端节点。

properties 否 Map<String,St

ring> 程序系统参数。 最多为2048字 符,不能包含><|'`&!\特殊字 符,可为空。

响应参数

状态码: 200

5-17 响应 Body 参数

参数 参数类型 描述

job_submit_re

sult JobSubmitRe

sult object 作业执行结果。

5-18 JobSubmitResult

参数 参数类型 描述

job_id String 作业ID。

state String 作业提交状态。 枚举值:

● COMPLETE:作业提交完成。

● FAILED:作业提交失败。

状态码: 500

5-19 响应 Body 参数

参数 参数类型 描述

error_code String 错误码 error_msg String 错误描述

请求示例

● MapReduce作业请求示例

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions { "job_name" : "MapReduceTest",

"job_type" : "MapReduce",

"arguments" : [ "obs://obs-test/program/hadoop-mapreduce-examples-x.x.x.jar", "wordcount", "obs://

obs-test/input/", "obs://obs-test/job/mapreduce/output" ], "properties" : {

"fs.obs.endpoint" : "obs endpoint", "fs.obs.access.key" : "xxx", "fs.obs.secret.key" : "yyy"

}}

● SparkSubmit作业请求示例

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions { "job_name" : "SparkSubmitTest",

"job_type" : "SparkSubmit",

"arguments" : [ master", "yarn", deploy-mode", "cluster", py-files", "obs://obs-test/a.py", "--conf", "spark.yarn.appMasterEnv.PYTHONPATH=/tmp:$PYTHONPATH", "--"--conf",

"spark.yarn.appMasterEnv.aaa=aaaa", "--conf", "spark.executorEnv.aaa=executoraaa", "--properties-file", "obs://obs-test/test-spark.conf", "obs://obs-test/pi.py", "100000" ],

"properties" : {

"fs.obs.access.key" : "xxx", "fs.obs.secret.key" : "yyy"

}}

● HiveScript作业请求示例

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions { "job_name" : "HiveScriptTest",

"job_type" : "HiveScript",

"arguments" : [ "obs://obs-test/sql/test_script.sql" ], "properties" : {

"fs.obs.endpoint" : "obs endpoint", "fs.obs.access.key" : "xxx", "fs.obs.secret.key" : "yyy"

}}

● HiveSql作业请求示例

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions { "job_name" : "HiveSqlTest",

"job_type" : "HiveSql",

"arguments" : [ "DROP TABLE IF EXISTS src_wordcount;\ncreate external table src_wordcount(line

string) row format delimited fields terminated by \"\\n\" stored as textfile location \"obs://donotdel-gxc/input/\";\ninsert into src_wordcount values(\"v1\")" ],

"properties" : {

"fs.obs.endpoint" : "obs endpoint", "fs.obs.access.key" : "xxx", "fs.obs.secret.key" : "yyy"

}}

● DistCp作业请求示例

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions { "job_name" : "DistCpTest",

"job_type" : "DistCp",

"arguments" : [ "obs://obs-test/DistcpJob/", "/user/test/sparksql/" ], "properties" : {

"fs.obs.endpoint" : "obs endpoint", "fs.obs.access.key" : "xxx", "fs.obs.secret.key" : "yyy"

}}

● SparkScript作业请求示例

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions { "job_type" : "SparkSql",

"job_name" : "SparkScriptTest",

"arguments" : [ "op-key1", "op-value1", "op-key2", "op-value2", "obs://obs-test/sql/test_script.sql" ], "properties" : {

"fs.obs.access.key" : "xxx", "fs.obs.secret.key" : "yyy"

}}

● SparkSql作业请求示例

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions { "job_type" : "SparkSql",

"job_name" : "SparkSqlTest",

"arguments" : [ "op-key1", "op-value1", "op-key2", "op-value2", "create table student_info3 (id string,name string,gender string,age int,addr string);" ],

"properties" : {

"fs.obs.access.key" : "xxx", "fs.obs.secret.key" : "yyy"

}}

● Flink作业请求示例

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions { "job_name" : "flinkTest",

"job_type" : "Flink",

"arguments" : [ "run", "-d", "-ynm", "testExcutorejobhdfsbatch", "-m", "yarn-cluster", "hdfs://test/

examples/batch/WordCount.jar" ], "properties" : {

"fs.obs.endpoint" : "obs endpoint", "fs.obs.access.key" : "xxx", "fs.obs.secret.key" : "yyy"

}}

● SparkPython作业请求示例(该类型作业将转换为SparkSubmit类型提交,MRS控 制台界面的作业类型展示为SparkSubmit,通过接口查询作业列表信息时作业类 型请选择SparkSubmit。)

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions { "job_type" : "SparkPython",

"job_name" : "SparkPythonTest",

"arg" : [ "--master", "yarn", "--deploy-mode", "cluster", "--py-files", "obs://obs-test/a.py", "--conf",

"spark.yarn.appMasterEnv.PYTHONPATH=/tmp:$PYTHONPATH", "--conf",

"spark.yarn.appMasterEnv.aaa=aaaa", "--conf", "spark.executorEnv.aaa=executoraaa", "--properties-file", "obs://obs-test/test-spark.conf", "obs://obs-test/pi.py", 100000 ],

"properties" : {

"fs.obs.access.key" : "xxx", "fs.obs.secret.key" : "yyy"

}}

● FlinkSql作业请求示例

POST https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions { "job_name" : "flinkTest",

"job_type" : "Flink",

"arguments" : [ "run", "-d", "-ynm", "testExcutorejobhdfsbatch", "-m", "yarn-cluster", "-u", "SELECT name, COUNT(*) AS cnt FROM (VALUES ('Bob'), ('Alice'), ('Greg'), ('Bob')) AS NameTable(name) GROUP BY name;" ],

"properties" : {

"fs.obs.endpoint" : "obs endpoint", "fs.obs.access.key" : "xxx", "fs.obs.secret.key" : "yyy"

}}

响应示例

状态码: 200 新增并执行作业

{ "job_submit_result" : {

"job_id" : "44b37a20-ffe8-42b1-b42b-78a5978d7e40", "state" : "COMPLETE"

}}

状态码: 500 新增并执行作业失败

{ "job_submit_result" : {

"error_msg" : "不能提交Hive相关作业", "error_code" : "0168"

}}

状态码

状态码 描述

200 新增并执行作业

500 新增并执行作业失败

错误码

请参见错误码。