繁体   English   中英

不使用 BigQueryOperators 与 DAG 外部的 BigQuery 交互的 Airflow

[英]Airflow to interact with BigQuery outside of the DAG not using BigQueryOperators

我正在努力为 Airflow 上的以下问题找到解决方案:

我在 BQ 上有一张包含产品列表的表格(定期递增)。 每个产品在 BigQuery/GoogleCloud 上都有不同的项目。 比方说:

产品 | 编号 | 项目编号 | 参数_1 | 参数_2

我目前在 Jenkins 上的管道使用 for 循环为每个产品构建并行 DAG,并且运行良好。

当我转换为 Airflow DAG 时,我能够实现以下目标:

...
product_params = {
    'Product1': {
        'project_id': 'product-1',
        'color': 'Blue'
    },
    'Product2': {
        'project_id': 'product-2',
        'color': 'Red'
    },...
}


my_dag = DAG(
    'My_Default_DAG',
    schedule_interval='@once',
    default_args=default_args
    )

dag_tasks = {}

with firebase_dag as dag:
    for product_name, p_params in product_params.items():
        query_params = {
            'product_name': product_name,
            'product_project': product_params['project_id'],
            'color': product_params['color'],
            'event_date': '2019-12-01',
            'event_date_suffix': '20191201'
        }

        dag_tasks[game] = {}

        dag_tasks[game]['step_1'] = BigQueryOperator(
                task_id="{0}_step_1".format(product_name),
                bql='sql_folder/step-1.sql',
                use_legacy_sql=False,
                destination_dataset_table="{0}.prod_dataset.step1Table_{1}".format(product_params['project_id'], query_params['event_date_suffix']),
                write_disposition='WRITE_TRUNCATE',
                params=query_params
            )
       ### following steps...

理想情况下,我想直接在 BigQuery 上查询我的产品参数。 我已经在 bitbucket 上为它开发了一个 python 库,还有许多其他方法被 Jenkins 广泛使用。

有什么办法可以将该库导入气流并在我的 dags 中使用它吗?

否则,除了 BigQueryOperators,还有其他方法可以构建与 bigquery 交互的方法吗?

是的,您可以在 DAG 中使用您的库并将其与PythonOperator一起使用。

您可以从私有存储库本地文件在 Composer 中安装自己的 Python 库。

建议您在部署到生产环境之前在 Airflow 工作容器中本地测试 PyPI 包,因为自定义包可能会导致与 Airflow 所需的依赖项发生冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM