web-dev-qa-db-ja.com

気流中でタスクがスタックして実行されないのはなぜですか?

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で実行しているので、かなり含まれているはずです。

6
Tomas Jansson

これが最初のAirflowセットアップである場合、最初にこれらのことを確認することをお勧めします。 Airflow 1.9.0は​​キューイングされますが、タスクを起動しません

さらに、ここでは特に最後のステップをお勧めします。

  • 他に何も機能しない場合は、Web UIを使用してDAGをクリックしてから、Graph Viewをクリックします。最初のタスクを選択し、タスクインスタンスをクリックします。 「タスクインスタンスの詳細」の段落で、DAGが待機しているか、実行されていない理由を確認できます。

これにより、タスクがスケジュールされていない理由がわかります。

3
tobi6