我曾经尝试过一个简单的DAG,以运行三个带有传感器的任务,然后在EMR上运行,如下所示:
EMR_creation -> T1 -> S1 -> T2 -> S2 -> T3 -> S3 -> EMR_termination.
我遇到的问题是T1-S1成功,但由于错误T2从未启动:
错误-调用AddJobFlowSteps操作时发生错误(ValidationException):正在关闭,终止或完成的作业流可能无法修改。
当我设置重试步骤而没有在EMR群集中记录时,会重复同样的错误。我曾尝试将不同的任务放在T1或T2中,但没有进行改进。
答案 0 :(得分:0)
假设EMR在没有任何余地的情况下终止了您的工作流程
有一个名为KeepJobFlowAliveWhenNoSteps
的参数,可以在所有步骤完成后停止终止EMR作业流,您可以使用它。参见boto3 docs。
如果JobFlowInstancesConfig
KeepJobFlowAliveWhenNoSteps
参数 设置为TRUE
,集群将转换为WAITING状态,而不是 而不是在步骤完成后关闭。
对于气流,可能在emr_connection
或您使用的job_flow_overrides
格中。
示例emr_connection
:
{
"LogUri": "s3n://aws-logs-***-us-east-1/elasticmapreduce/",
"ReleaseLabel": "emr-5.28.0",
"Instances": {
"InstanceGroups": ["..."],
"KeepJobFlowAliveWhenNoSteps": true, -- here!
"Ec2KeyName": "emr-key"
},
"VisibleToAllUsers": true,
"BootstrapActions": ["..."],
"JobFlowRole": "???",
"ServiceRole": "??"
}