我在Google作曲家(气流)中有DAG可以导入:
从airflow.contrib.sensors.gcs_sensor导入GoogleCloudStorageObjectSensor
运行DAG时出现此错误:
“ ImportError:没有名为sensors.base_sensor_operator的模块”
基本上,我想先检查存储桶中是否存在文件,然后再执行其他操作。
这是完整的python代码:
from datetime import datetime,timedelta
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.subdag_operator import SubDagOperator
from airflow.operators.python_operator import PythonOperator
from airflow.contrib.operators.gcs_to_bq import
GoogleCloudStorageToBigQueryOperator
from airflow.contrib.sensors.gcs_sensor import
GoogleCloudStorageObjectSensor
CONNECTION_ID = 'something'
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2018, 8, 21, 0, 0),
}
def print_hello():
return 'youtube folder exists!!'
with DAG('DATA_TRANSFER_GCP_BUCKET_TO_BQ2',
schedule_interval=timedelta(days=1),
default_args=default_args ) as dag:
gcp_sensorBucket=GoogleCloudStorageObjectSensor(
task_id='gcp_sensorbucket',
bucket='/aa_youtube_new/2018/06/04/',
#bucket='{{var.value.gcp_youtube_video_bucket}}/2018/06/04/',
object='*.csv',
google_cloud_conn_id=CONNECTION_ID
)
hello_operator = PythonOperator(task_id='hello_task',
python_callable=print_hello)
hello_operator.set_upstream(gcp_sensorBucket)
答案 0 :(得分:0)
您使用的是哪个Composer版本?我将您的DAG代码复制并粘贴到新创建的Composer环境composer-1.1.0-airflow-1.9.0中,它对我来说是开箱即用的。
答案 1 :(得分:0)
我看到从base_sensor_operator导入的内容已添加到version 1.10 of Airflow中。版本1.8和1.9中没有此功能。相反,导入是按以下方式完成的:
from airflow.operators.sensors import BaseSensorOperator
因此,检查传感器,相关的sensor for Airflow 1.10位于传感器下方,但对于气流1.9和1.8,传感器位于operators以下。
因此,此问题似乎与Composer和Airflow的版本有关,但Airflow 1.10在8月不适用于Composer。实际上,此问题已在Google's Issue Tracker上报告,并且响应是通过使用Apache Airflow版本1.10(可以包含在version 1.3 of Composer中)解决此问题。