Я тестирую какой-то конвейер на небольшом наборе данных, а затем внезапно мой конвейер ломается во время одного из тестовых прогонов с таким сообщением: Not found: Dataset thijs-dev:nlthijs_ba was not found in location US
- Никогда не запускал, развернул или использовал любой ресурс США.
- Регион, зона и размещение базируются на ЕС.
- Трубопровод развернут в ЕС, это отображается в пользовательском интерфейсе, который работает в ЕС.
- Когда я проверяю логи, я вижу resouce.labels.region 'europe-west4'.
- Я запускаю более 40 конвейеров с одним и тем же сценарием развертывания и никогда с настройками США.
- Все местоположения данных для всех таблиц в BQ все в ЕС.
- При использовании DirectRunner журнал показывает:
INFO:root:Using location 'EU' from table
- Я использую ссылки на таблицы без имени проекта в моих запросах, потому что у нас есть тест / прием и т. Д. c. в другом проекте. Это отлично работает. Когда я добавляю проект, ошибка остается.
Мой скрипт запуска
python pippeline/main.py --project thijs-dev --region europe-west4 --runner DataflowRunner --temp_location gs://thijs/dataflow/tmp --staging_location gs://thijs/dataflow/staging --job_name thijspipe --save_main_session --setup_file pipeline/setup.py --autoscaling_algorithm=THROUGHPUT_BASED --max_num_workers=7
Мой неудачный шаг
thijs = (p | 'ReadTable thijs' >> beam.io.Read(beam.io.BigQuerySource(query=queries.load_code_table(), use_standard_sql=True)))
Пример того, как выглядит мой запрос
#standardSQL
select
original.c1,
original.c2,
original.c3
from `thijs.tablename` original
inner join (
select c1, max(c2) as col2 from `thijs.tablename` group by c2)
timejoin on timejoin.c5 = original.c5 and timejoin.c2 = original.c2
Мой вопрос: что именно идет не так, откуда идут эти США?
Ошибка
RuntimeError: apitools.base.py.exceptions.HttpNotFoundError: HttpError accessing <https://www.googleapis.com/bigquery/v2/projects/thijs-dev/jobs?alt=json>: response: <{'vary': 'Origin, X-Origin, Referer', 'content-type': 'application/json; charset=UTF-8', 'date': 'Sun, 16 Feb 2020 09:40:10 GMT', 'server': 'ESF', 'cache-control': 'private', 'x-xss-protection': '0', 'x-frame-options': 'SAMEORIGIN', 'x-content-type-options': 'nosniff', 'transfer-encoding': 'chunked', 'status': '404', 'content-length': '338', '-content-encoding': 'gzip'}>, content <{ "error": { "code": 404, "message": "Not found: Dataset thijs-dev:`nlthijs_ba was not found in location US", "errors": [ { "message": "Not found: Dataset thijs-dev:`nlthijs_ba was not found in location US", "domain": "global", "reason": "notFound" } ], "status": "NOT_FOUND" } } > [while running 'Transform Details Thijs']
[обновление]
Здесь вы можете видеть, что я принудительно установил стандарт sql используя # standard sql в качестве первой строки в моих запросах. Но где-то API заставляет наследовать SQL, и я не знаю, что и где.
RuntimeError: apitools.base.py.exceptions.HttpBadRequestError: HttpError accessing <https://www.googleapis.com/bigquery/v2/projects/thijs-dev/jobs?alt=json>: response: <{'vary': 'Origin, X-Origin, Referer', 'content-type': 'application/json; charset=UTF-8', 'date': 'Sun, 16 Feb 2020 20:59:12 GMT', 'server': 'ESF', 'cache-control': 'private', 'x-xss-protection': '0', 'x-frame-options': 'SAMEORIGIN', 'x-content-type-options': 'nosniff', 'transfer-encoding': 'chunked', 'status': '400', 'content-length': '354', '-content-encoding': 'gzip'}>, content <{ "error": { "code": 400, "message": "Query text specifies use_legacy_sql:false, while API options specify:true", "errors": [ { "message": "Query text specifies use_legacy_sql:false, while API options specify:true", "domain": "global", "reason": "invalid" } ], "status": "INVALID_ARGUMENT" } } > [while running 'pipeline']
Python SDK 2.16.0 и 2.19.0