我最近遇到了这个令人讨厌的错误,其中 Airflowapply_defaults 装饰者正在抛出以下堆栈跟踪 (my **kwargs
确实包含job_flow_id
)
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/mnt/airflow/dags/zanalytics-airflow/src/main/mysql_import/dags/mysql_import_dag.py", line 23, in <module>
sync_dag_builder.build_sync_dag()
File "/mnt/airflow/dags/zanalytics-airflow/src/main/mysql_import/dags/builders/sync_dag_builders/emr_sync_dag_builder.py", line 26, in build_sync_dag
create_emr_task, terminate_emr_task = self._create_job_flow_tasks()
File "/mnt/airflow/dags/zanalytics-airflow/src/main/mysql_import/dags/builders/sync_dag_builders/emr_sync_dag_builder.py", line 44, in _create_job_flow_tasks
task_id=GlobalConstants.EMR_TERMINATE_STEP)
File "/home/hadoop/.pyenv/versions/3.6.6/lib/python3.6/site-packages/airflow/utils/decorators.py", line 98, in wrapper
result = func(*args, **kwargs)
File "/mnt/airflow/dags/zanalytics-airflow/src/main/aws/operators/emr_terminate_ancestor_job_flows_operator.py", line 31, in __init__
EmrTerminateJobFlowOperator.__init__(self, *args, **kwargs)
File "/home/hadoop/.pyenv/versions/3.6.6/lib/python3.6/site-packages/airflow/utils/decorators.py", line 98, in wrapper
result = func(*args, **kwargs)
File "/home/hadoop/.pyenv/versions/3.6.6/lib/python3.6/site-packages/airflow/contrib/operators/emr_terminate_job_flow_operator.py", line 44, in __init__
super(EmrTerminateJobFlowOperator, self).__init__(*args, **kwargs)
File "/home/hadoop/.pyenv/versions/3.6.6/lib/python3.6/site-packages/airflow/utils/decorators.py", line 94, in wrapper
raise AirflowException(msg)
airflow.exceptions.AirflowException: Argument ['job_flow_id'] is required
令人不安的部分是
- 异常目前源自
__init__
of the built-in EmrTerminateJobFlowOperator
- 早些时候它来自EmrCreateJobFlowOperator,尽管这并不需要
job_flow_id
参数;但它已经消失了
调查decorators.py
,我觉得sig_cache可能会搞乱一些事情。事实上,从提交引入的它,我不知道如何函数签名缓存正在工作(至少它不工作this way)?
我尝试过全部删除__pycache__
并重新启动scheduler
, webserver
没有运气(我正在单独运行它们Linux screens)
- 什么可能导致错误?
- 如何
sig_cache
是否有效,在任何情况下都需要强制清除吗?如果有,如何清除?
环境
Python 3.6.6
Airflow 1.10.2
LocalExecutor