我正在尝试在Airflow中使用Hdfs传感器运算符,以根据文件到达给定路径来触发下一个任务。但是,当我部署dag时,得到的错误为
损坏的DAG:[/ usr / local / airflow / dags / test_sensor_dag.py]无效的语法(client.py,第1473行) 代码:
from airflow import DAG
from airflow.sensors.hdfs_sensor import HdfsSensor
from datetime import datetime
default_args = {'owner': 'airflow',
'depends_on_past': False,
'provide_context': True,
'start_date': datetime(2020, 3, 19, 0, 0),
'email': ['hr@***.com'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 0,
'concurrency': 1
}
# run it daily at 6AM
schedule_interval = '00 6 * * *'
dag_name = 'test_sensor_dag'
dag = DAG(
dag_id=dag_name,
default_args=default_args,
schedule_interval=schedule_interval)
source_data_sensor = HdfsSensor(
task_id='source_data_sensor',
filepath='/data/test/file.csv',
poke_interval=10,
timeout=5,
dag=dag
).poke()
success_notification = EmailOperator(to=['hr@***.com'], task_id='success_notification',
subject='[Success:] test for {{ ds }}',
html_content='Successfully ran the DAG',
dag=dag)
source_data_sensor
success_notification.set_upstream(source_data_sensor)
答案 0 :(得分:0)
您无需在代码中调用.poke()
,气流将在运行时执行poke函数
答案 1 :(得分:0)
在安装气流时,运行以下命令序列对我有用:
pip install snakebite-py3
pip install azure-storage>=0.34.0,<0.37.0
pip install 'apache-airflow[all]'
更新:更好的是,如果您不使用Azure,只需安装airflow packages中所需的软件包。 但是,安装蛇咬是必须的
答案 2 :(得分:0)
您的问题不是戳或类似的问题,如果您正确安装了 hdfs 提供程序,只需让您的 dag 更简单(仅放置您的 hdfs 传感器任务并删除电子邮件内容)并再次运行它,然后提供更多您的错误。< /p>
仅供参考:client.py 如您所知,与 HTTP 和 XMLRPC 相关,因此您可以简单地在 cnf 文件中检查它,并确保您以正确的形式和语法提供了正确的配置,然后再次运行它。还要确保您遵循最佳做法以避免不良导入。