在Google Cloud Composer中的气流DAG中获取导入错误

时间:2018-08-22 20:19:27

标签: python google-cloud-platform airflow google-cloud-composer

我在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)

2 个答案:

答案 0 :(得分:0)

您使用的是哪个Composer版本?我将您的DAG代码复制并粘贴到新创建的Composer环境composer-1.1.0-airflow-1.9.0中,它对我来说是开箱即用的。

这是屏幕截图: enter image description here

答案 1 :(得分:0)

我看到从base_sensor_operator导入的内容已添加到version 1.10 of Airflow中。版本1.81.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中)解决此问题。