气流DAG:我的执行在第一个任务后“终止”

时间:2020-07-08 03:46:16

标签: airflow amazon-emr

我曾经尝试过一个简单的DAG,以运行三个带有传感器的任务,然后在EMR上运行,如下所示:

EMR_creation -> T1 -> S1 -> T2 -> S2 -> T3 -> S3 -> EMR_termination.

我遇到的问题是T1-S1成功,但由于错误T2从未启动:

错误-调用AddJobFlowSteps操作时发生错误(ValidationException):正在关闭,终止或完成的作业流可能无法修改。

当我设置重试步骤而没有在EMR群集中记录时,会重复同样的错误。我曾尝试将不同的任务放在T1或T2中,但没有进行改进。

1 个答案:

答案 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": "??"
}