BigQueryOperator
で気流を試しています。 google composer=を後で使用するつもりだったが、最初にローカルで実行したい。気流を上げてBashOperator
を実行するとうまく動作し、airflow test <dag> <task>
ここで、task
は実行したい大きなクエリタスクですが、UIからDAGをトリガーすると、bigqueryタスクはキューに入れられません。代わりに、それらはREMOVED
状態を持ち、何も起こりません。
私のDAG定義は次のようになります。
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
from airflow.contrib.operators.bigquery_operator import BigQueryOperator
yesterday = datetime.combine(
datetime.today() - timedelta(1),
datetime.min.time())
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'email': ['[email protected]'],
'start_date': yesterday,
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
with DAG(
'tutorial', default_args=default_args) as dag:
operators
t1 = BashOperator(
task_id='print_date',
bash_command='date')
template_sql = '''
SELECT 'TOMAS' name, '{{ params.my_value }}' value, "{{ params.my_value2 }}" tables
'''
sampleBigQuery1 = BigQueryOperator(
task_id='bq_simple_sql1',
bql=template_sql,
use_legacy_sql=False,
destination_dataset_table='temp_tomas.airflow_1',
allow_large_results=True,
params={'my_value': (datetime.now()).strftime("%D %T"),
'my_value2': "yolo"}, # getTables()},
create_disposition='CREATE_IF_NEEDED',
write_disposition='WRITE_TRUNCATE'
)
t1 >> sampleBigQuery1
それで、airflow test ...
スケジューラーまたはUIによってトリガーされたときではありませんか?私がここに持っているものと間違っているように見えるものですか?
ローカルでは、sqlliteでエアフローの標準インストールを使用していますが、それが影響することはないと思います。私はすべてを1つのpython envで実行しているので、かなり含まれているはずです。
これが最初のAirflowセットアップである場合、最初にこれらのことを確認することをお勧めします。 Airflow 1.9.0はキューイングされますが、タスクを起動しません
さらに、ここでは特に最後のステップをお勧めします。
これにより、タスクがスケジュールされていない理由がわかります。