只有将 SQL 文件放在与 DAG 相同的文件夹中时,我才能运行它:
create_tables = PostgresOperator(
task_id="create_tables",
dag=dag,
postgres_conn_id="redshift",
sql="create_tables.sql"
)
Run Code Online (Sandbox Code Playgroud)
如果 create_tables.sql 位于不同的文件夹(父文件夹、同级文件夹)中,PostgresOperator 会抛出异常jinja2.exceptions.TemplateNotFound,我尝试过绝对路径、相对路径(../create_tables.sql),但没有运气。
如何理解这个算子的文件加载机制?
定义 dag 时,您必须添加 template_searchpath 作为参数,它是文件夹的绝对路径。然后你只需要调用文件名即可。例子:
with DAG('retraining_sagemaker',
default_args=default_args,
schedule_interval = timedelta(days=21),
template_searchpath = ['/home/ubuntu/airflow_ci/current/scripts/antifraud']
) as dag:
start = DummyOperator(
task_id = 'start')
generate_train_and_test_tables = PostgresOperator(
task_id = 'generate_train_and_test_tables',
sql = ['generate_train_and_test_tables.sql'],
postgres_conn_id = 'redshift',
autocommit = True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1655 次 |
| 最近记录: |