气流HdfsSensor操作员无法正常工作

时间:2020-03-24 02:02:20

标签: hdfs airflow airflow-scheduler airflow-operator

我正在尝试在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)

3 个答案:

答案 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 文件中检查它,并确保您以正确的形式和语法提供了正确的配置,然后再次运行它。还要确保您遵循最佳做法以避免不良导入。