【问题标题】:Can we include custom sql scripts to run in Airflow deployment?我们可以包含自定义 sql 脚本以在 Airflow 部署中运行吗?
【发布时间】:2021-08-10 14:07:13
【问题描述】:

我正在尝试运行气流作业以使用 MWAA(来自 AWS 的托管气流)对 Snowflake 实例执行一些 SQL 操作。在 MWAA 中设置 Airflow 时,它会要求 DAG、插件和要求。有什么方法可以包含自定义 sql 脚本?

下面是我试过的例子:


with DAG(
    'Snowflake_Prototype',
    default_args=default_args,
    schedule_interval='@daily',
    start_date=days_ago(1),
    template_searchpath="include"
) as dag:

    start = DummyOperator(task_id='start')
    
    t2 = SnowflakeOperator(
            task_id='create_staging_tables',
            snowflake_conn_id=SNOWFLAKE_CONN_ID,
            sql='create_staging.sql'
        )

我打算在create_staging.sql 中运行sql 命令。为此,我已将 sql 脚本“create_staging.sql”上传到 s3 中名为 include 的文件夹,然后通过 DAG 声明中的 template_searchpath 引用它。看起来它的不是气流没有导入 s3 的所有内容。它似乎没有找到该文件。通过 MWAA 运行气流时,是否有任何其他方法可以包含相关脚本。

【问题讨论】:

    标签: airflow mwaa


    【解决方案1】:

    如果您像这样引用create_staging.sql - 相对引用,我认为它应该放在 dag 本身旁边,而不是放在专用的“包含”文件夹中。因此,只需将其放在放置 dag 的同一目录中即可。

    或者,您可能会尝试在 MWAA 工作程序中找到“include”文件夹最终安装位置的完整路径,并使用完整的“绝对”路径。

    【讨论】:

    • 谢谢贾雷克。当放置在 DAG 文件夹中时,MWAA 似乎会拾取 .sql 文件。看起来 MWAA 仅包含插件、需求和 DAG 文件夹中的文件,而忽略了 s3 存储桶中的任何其他内容。在这种情况下,它没有包含“include”文件夹。
    • 其实你可以在MWAA环境中创建一个文件夹,然后从S3下载文件。你可以把你的文件放在创建的文件夹中
    最近更新 更多