Template_searchpath выдает ошибку TemplateNotFound в Airflow и не может найти скрипт SQL - PullRequest
0 голосов
/ 05 июня 2019

У меня DAG описан так:

tmpl_search_path = '/home/airflow/gcs/sql_requests/'

with DAG(dag_id='pipeline', default_args=default_args, template_searchpath = [tmpl_search_path]) as dag:

    create_table = bigquery_operator.BigQueryOperator(
        task_id = 'create_table',
        sql = 'create_table.sql',
        use_legacy_sql = False,
        destination_dataset_table = some_table)
    )

Задача create_table вызывает скрипт SQL create_table.sql. Этот сценарий SQL не находится в той же папке, что и папка DAG: он находится в папке sql_requests на том же уровне, что и папка DAG. Это архитектура внутри корзины GCP Composer (которая является Google Airflow):

bucket_name
|- airflow.cfg
|- dags
   |_ pipeline.py
|- ...
|_ sql_requests
   |_ create_table.sql

Какой путь мне нужно задать для template_searchpath для ссылки на папку sql_requests внутри корзины Airflow на GCP?

Я пробовал template_searchpath= ['/home/airflow/gcs/sql_requests'], template_searchpath= ['../sql_requests'], template_searchpath= ['/sql_requests'], но ни один из них не помог.

Я получаю сообщение об ошибке «jinja2.exceptions.TemplateNotFound»

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Согласно https://cloud.google.com/composer/docs/concepts/cloud-storage невозможно хранить файлы, необходимые для выполнения даг, в другом месте, чем в папках dags или plugins:

Чтобы избежать рабочего процессапри сбое сохраните ваши DAG, плагины и модули Python в dags / или plugins / folder - даже если ваши модули Python не содержат DAG или плагины.

По этой причине у меня был TemplateNotFoundошибка.

0 голосов
/ 06 июня 2019

Я считаю, что по умолчанию оператор ищет файлы sql в папке DAG, поэтому вы можете поместить свой SQL в папку

gs://composer-bucket-name/dags/sql/create_table.sql

, а затем ссылаться на него как

sql = '/sql/create_table.sql'

Если это не сработает, попробуйте без начального / (что, я не уверен, что вам нужно)

Редактировать

Если вы хотите поставить ихв папке в корне ведра попробуйте

sql = '../sql/create_table.sql'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...