Проблема облачного компоновщика с наборами данных в регионе Австралии

Я пытался использовать облачный композитор для планирования и организации заданий Bigquery. Таблицы Bigquery находятся в регионе australia-southeast1. Среда облачного композитора была создана в регионе us-central1 (поскольку композитор недоступен в регионе Австралия). Когда я пытаюсь выполнить команду ниже, она выдает расплывчатую ошибку. Та же самая настройка работала нормально, когда я пытался использовать наборы данных, находящиеся в ЕС и США.

Command:
gcloud beta composer environments run bq-schedule --location us-central1 test -- my_bigquery_dag input_gl 8-02-2018

Error:

Traceback (most recent call last):
  File "/usr/local/bin/airflow", line 7, in <module>
    exec(compile(f.read(), __file__, 'exec'))
  File "/usr/local/lib/airflow/airflow/bin/airflow", line 27, in <module>
    args.func(args)
  File "/usr/local/lib/airflow/airflow/bin/cli.py", line 528, in test
    ti.run(ignore_task_deps=True, ignore_ti_state=True, test_mode=True)
  File "/usr/local/lib/airflow/airflow/utils/db.py", line 50, in wrapper
    result = func(*args, **kwargs)
  File "/usr/local/lib/airflow/airflow/models.py", line 1583, in run
    session=session)
  File "/usr/local/lib/airflow/airflow/utils/db.py", line 50, in wrapper
    result = func(*args, **kwargs)
  File "/usr/local/lib/airflow/airflow/models.py", line 1492, in _run_raw_task
    result = task_copy.execute(context=context)
  File "/usr/local/lib/airflow/airflow/contrib/operators/bigquery_operator.py", line 98, in execute
    self.create_disposition, self.query_params)
  File "/usr/local/lib/airflow/airflow/contrib/hooks/bigquery_hook.py", line 499, in run_query
    return self.run_with_configuration(configuration)
  File "/usr/local/lib/airflow/airflow/contrib/hooks/bigquery_hook.py", line 868, in run_with_configuration
    err.resp.status)
Exception: ('BigQuery job status check failed. Final error was: %s', 404)

Is there any workaround to resolve this issue? 

person APC    schedule 12.02.2019    source источник


Ответы (1)


Поскольку ваш набор данных находится в australia-southeast1, BigQuery по умолчанию создал задание в том же месте, что и australia-southeast1. Однако Airflow в вашей среде Composer пытался получить статус задания без указания поля местоположения.

Ссылка: https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/get

Это было исправлено моим PR и объединено с master.

Чтобы обойти это, вы можете расширить BigQueryCursor и переопределить функцию run_with_configuration() с поддержкой местоположения.

person Ryan Yuan    schedule 13.02.2019
comment
Спасибо Райан. Не могли бы вы поделиться примером кода для того же? - person APC; 15.02.2019