Amazon EMR
综述
Amazon EMR 任务类型,用于在AWS上操作EMR集群并执行计算任务。 后台使用 aws-java-sdk 将JSON参数转换为任务对象,提交到AWS,目前支持两种程序类型:
RUN_JOB_FLOW使用 API_RunJobFlow 提交 RunJobFlowRequest 对象ADD_JOB_FLOW_STEPS使用 API_AddJobFlowSteps 提交 AddJobFlowStepsRequest 对象
任务参数
- 默认参数说明请参考DolphinScheduler任务参数附录
默认任务参数一栏。
| 任务参数 | 描述 |
|---|---|
| 程序类型 | 选择程序类型,如果是RUN_JOB_FLOW,则需要填写jobFlowDefineJson,如果是ADD_JOB_FLOW_STEPS,则需要填写stepsDefineJson |
| jobFlowDefineJson | RunJobFlowRequest 对象对应的JSON,详细JSON定义参见 API_RunJobFlow_Examples |
| stepsDefineJson | AddJobFlowStepsRequest 对象对应的JSON,详细JSON定义参见 API_AddJobFlowSteps_Examples |
任务样例
创建EMR集群并运行Steps
该样例展示了如何创建RUN_JOB_FLOW类型EMR任务节点,以执行SparkPi为例,该任务会创建一个EMR集群,并且执行SparkPi示例程序。

jobFlowDefineJson 参数样例
{"Name": "SparkPi","ReleaseLabel": "emr-5.34.0","Applications": [{"Name": "Spark"}],"Instances": {"InstanceGroups": [{"Name": "Primary node","InstanceRole": "MASTER","InstanceType": "m4.xlarge","InstanceCount": 1}],"KeepJobFlowAliveWhenNoSteps": false,"TerminationProtected": false},"Steps": [{"Name": "calculate_pi","ActionOnFailure": "CONTINUE","HadoopJarStep": {"Jar": "command-runner.jar","Args": ["/usr/lib/spark/bin/run-example","SparkPi","15"]}}],"JobFlowRole": "EMR_EC2_DefaultRole","ServiceRole": "EMR_DefaultRole"}
向运行中的EMR集群添加Step
该样例展示了如何创建ADD_JOB_FLOW_STEPS类型EMR任务节点,以执行SparkPi为例,该任务会向运行中的EMR集群添加一个SparkPi示例程序。

stepsDefineJson 参数样例
{"JobFlowId": "j-3V628TKAERHP8","Steps": [{"Name": "calculate_pi","ActionOnFailure": "CONTINUE","HadoopJarStep": {"Jar": "command-runner.jar","Args": ["/usr/lib/spark/bin/run-example","SparkPi","15"]}}]}
注意事项:
- EMR 任务类型的故障转移尚未实现。目前,DolphinScheduler 仅支持对 yarn task type 进行故障转移。其他任务类型,如 EMR 任务、k8s 任务尚未准备好。
stepsDefineJson一个任务定义仅支持关联单个step,这样可以更好的保证任务状态的可靠性。
