【问题标题】:Airflow BigQueryGetDataOperator max_results parameter doesn't workAirflow BigQueryGetDataOperator max_results 参数不起作用
【发布时间】:2019-11-26 15:38:46
【问题描述】:
import logging
from datetime import datetime, timedelta

from airflow.utils import dates
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.contrib.operators.bigquery_get_data import BigQueryGetDataOperator




default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': dates.days_ago(2),
}

dag = DAG(
    dag_id='bigQueryPipeline',
    default_args=default_args,
    schedule_interval='0 0 * * *'
)


t1 = BigQueryGetDataOperator(
    task_id='bigquery_test',
    dataset_id= <my-dataset-name>,
    table_id= <my-table-id>,
    max_results='2',
)


def print_context(**context):
    import time
    import json
    xcom_pull = context['ti'].xcom_pull(task_ids='bigquery_test')
    logging.info('logging ', json.dumps(xcom_pull))


t2 = PythonOperator(
    task_id='print_result',
    python_callable=print_context,
    provide_context=True,
    dag=dag
)

t1 >> t2

if __name__ == "__main__":
    dag.cli()

所以,这是我的 DAG。我正在测试从 BigQuery 表中获取数据。除了 docs 中的 max_results 参数外,一切正常。

正如我在日志中看到的那样:

[2019-11-26 14:46:02,272] {bigquery_get_data.py:92} INFO - Fetching Data from:
[2019-11-26 14:46:02,272] {bigquery_get_data.py:94} INFO - Dataset: <my-dataset> ; Table: <my-table> ; Max Results: 2
[2019-11-26 14:46:02,291] {logging_mixin.py:112} INFO - [2019-11-26 14:46:02,291] {gcp_api_base_hook.py:145} INFO - Getting connection using `google.auth.default()` since no key file is defined for hook.
[2019-11-26 14:46:02,309] {logging_mixin.py:112} INFO - [2019-11-26 14:46:02,309] {discovery.py:271} INFO - URL being requested: GET https://www.googleapis.com/discovery/v1/apis/bigquery/v2/rest
[2019-11-26 14:46:02,412] {logging_mixin.py:112} INFO - [2019-11-26 14:46:02,412] {discovery.py:867} INFO - URL being requested: GET https://bigquery.googleapis.com/bigquery/v2/projects/<my-project>/datasets/<my-dataset>tables/<my-table>/data?maxResults=2&alt=json
[2019-11-26 14:46:02,851] {bigquery_get_data.py:106} INFO - Total Extracted rows: 77374

注意第 2 行中的 Max Results: 2 和第 5 行中的 ?maxResults=2 查询字符串。除此之外,Total Extracted rows: 77374 在最后一行。

我猜可能是 bigquery api 错误?

你们中有人知道如何向 Airflow 报告此问题吗?谷歌呢?

编辑:找到submit bug reports for airflow的位置。

【问题讨论】:

    标签: api google-cloud-platform google-api google-bigquery airflow


    【解决方案1】:

    我认为这不是 Bigquery 错误,您看到的结果是指令 BigQueryGetDataOperator 处理的所有数据的结果。

    因此,如果你想看到第二步t2的结果,你应该寻找一个已完成的任务(深绿色)。

    现在,点击你的 Dag 的Task Idprint_result”。

    这样你就可以看到这一步的日志和结果了。

    此外,您可以检查第一步选择一个已完成任务的结果,就像上一步一样,但这次使用Task Idbigquery_test”。

    然后,点击“XCom”按钮,在这里你会看到返回的两个结果。

    这是我的测试结果:

    已处理的行:

    结果:

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 2021-09-06
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 2013-12-19
      • 2012-11-18
      • 2019-07-06
      相关资源
      最近更新 更多