【发布时间】:2020-01-09 15:25:49
【问题描述】:
我们正在使用 AWS EMR 集群运行批处理 Spark 作业。这些作业会定期运行,我们希望通过 AWS Step Functions 进行编排。
截至 2019 年 11 月,Step Functions 已原生支持 EMR。向集群添加 Step 时,我们可以使用以下配置:
"Some Step": {
"Type": "Task",
"Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
"Parameters": {
"ClusterId.$": "$.cluster.ClusterId",
"Step": {
"Name": "FirstStep",
"ActionOnFailure": "CONTINUE",
"HadoopJarStep": {
"Jar": "command-runner.jar",
"Args": [
"spark-submit",
"--class",
"com.some.package.Class",
"JarUri",
"--startDate",
"$.time",
"--daysToLookBack",
"$.daysToLookBack"
]
}
}
},
"Retry" : [
{
"ErrorEquals": [ "States.ALL" ],
"IntervalSeconds": 1,
"MaxAttempts": 1,
"BackoffRate": 2.0
}
],
"ResultPath": "$.firstStep",
"End": true
}
在 HadoopJarStep 的 Args 列表中,我们希望动态设置参数。例如如果状态机执行的输入是:
{
"time": "2020-01-08",
"daysToLookBack": 2
}
配置中以“$”开头的字符串。执行状态机时应相应替换,EMR集群上的步骤应运行command-runner.jar spark-submit --class com.some.package.Class JarUri --startDate 2020-01-08 --daysToLookBack 2。但它运行的是command-runner.jar spark-submit --class com.some.package.Class JarUri --startDate $.time --daysToLookBack $.daysToLookBack。
有谁知道有没有办法做到这一点?
【问题讨论】:
标签: amazon-emr aws-step-functions