要解决"Airflow DAG EMR EmrCreateJobFlowOperator没有执行任何操作"问题,首先需要检查以下几个方面:
from airflow.contrib.operators.emr_create_job_flow_operator import EmrCreateJobFlowOperator
DEFAULT_ARGS = {
'owner': 'airflow',
'start_date': datetime(2022, 1, 1),
}
JOB_FLOW_OVERRIDES = {
'Name': 'SampleEMRJobFlow',
'ReleaseLabel': 'emr-6.4.0',
'LogUri': 's3://your-log-bucket/logs/',
'Instances': {
'InstanceGroups': [
{
'Name': 'Master nodes',
'Market': 'ON_DEMAND',
'InstanceRole': 'MASTER',
'InstanceType': 'm5.xlarge',
'InstanceCount': 1,
},
{
'Name': 'Worker nodes',
'Market': 'ON_DEMAND',
'InstanceRole': 'CORE',
'InstanceType': 'm5.xlarge',
'InstanceCount': 2,
}
],
'KeepJobFlowAliveWhenNoSteps': True,
'TerminationProtected': False,
'Ec2KeyName': 'your-ec2-key',
},
'Applications': [
{'Name': 'Spark'},
{'Name': 'Hadoop'},
],
'VisibleToAllUsers': True,
}
def create_emr_job_flow():
with DAG('emr_dag', default_args=DEFAULT_ARGS, schedule_interval='@once') as dag:
emr_task = EmrCreateJobFlowOperator(
task_id='create_emr_job_flow',
job_flow_overrides=JOB_FLOW_OVERRIDES,
aws_conn_id='aws_default',
emr_conn_id='emr_default'
)
return dag
dag = create_emr_job_flow()
请确保您根据自己的需求修改上述代码中的参数。
检查Airflow的连接配置:您需要在Airflow的连接配置中提供正确的AWS连接和EMR连接。在您的Airflow Web界面中,转到"Admin" -> "Connections",确保您有一个与AWS的连接(即aws_default
)和一个与EMR的连接(即emr_default
)。
检查任务依赖关系:确保您的任务在DAG中设置了正确的依赖关系。您可以使用set_upstream
或set_downstream
方法来设置任务之间的依赖关系。
检查日志:在Airflow的日志中查找有关任务运行的详细信息和错误消息。您可以在Airflow Web界面中的"DAGs"页面中找到相应的DAG并查看日志。
如果您仍然遇到问题,可以提供更多的代码示例和错误消息,以便我们能够更好地帮助您解决问题。
上一篇:Airflow DAG 多次运行