簡體   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