2017-02-09 10 views
1

Я пишу очень простой конвейер DataFlow, используя Python SDK v0.5.5. В конвейере используется объект BigQuerySource с запросом, который запрашивает таблицы BigQuery из наборов данных, которые находятся в ЕС.Google DataFlow Не удается прочитать и записать в разных местах (Python SDK v0.5.5)

При выполнении трубопровода я получаю следующее сообщение об ошибке (имя проекта анонимизированное):

HttpError: HttpError accessing <https://www.googleapis.com/bigquery/v2/projects/XXXXX/queries/93bbbecbc470470cb1bbb9c22bd83e9d?alt=json&maxResults=10000>: response: <{'status': '400', 'content-length': '292', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'transfer-encoding': 'chunked', 'expires': 'Thu, 09 Feb 2017 10:28:04 GMT', 'vary': 'Origin, X-Origin', 'server': 'GSE', '-content-encoding': 'gzip', 'cache-control': 'private, max-age=0', 'date': 'Thu, 09 Feb 2017 10:28:04 GMT', 'x-frame-options': 'SAMEORIGIN', 'alt-svc': 'quic=":443"; ma=2592000; v="35,34"', 'content-type': 'application/json; charset=UTF-8'}>, content <{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "invalid", 
    "message": "Cannot read and write in different locations: source: EU, destination: US" 
    } 
    ], 
    "code": 400, 
    "message": "Cannot read and write in different locations: source: EU, destination: US" 
} 
} 

ошибка возникает также при задании проекта, набор данных и таблиц имени. Однако нет ошибки при выборе данных из доступных общедоступных наборов данных (которые находятся в США, как шекспир). У меня также есть задания, выполняемые v0.4.4 SDK, которые не имеют этой ошибки.

Разница между этими версиями является созданием временного набора данных, как это показано предупреждением при запуске трубопровода:

WARNING:root:Dataset does not exist so we will create it 

Я кратко рассмотрел различные версии SDK и тому разница, кажется, вокруг этого временного набора данных. Похоже, что текущая версия создает временный набор данных по умолчанию с адресом в США (взято из мастера):

Я не нашел способ, чтобы отключить создание этих временных наборов данных. Я что-то не замечаю, или это действительно больше не работает при выборе данных из наборов данных ЕС?

ответ

1

Благодарим за сообщение об этой проблеме. Я предполагаю, что вы используете DirectRunner. Мы изменили реализацию преобразования чтения BigQuery для DirectRunner для создания временного набора данных (для SDK версий 0.5.1 и новее) для поддержки больших наборов данных. Похоже, мы не устанавливаем регион правильно здесь. Мы рассмотрим это.

Эта проблема не возникает, если вы используете DataflowRunner, который создает временные наборы данных в правильном регионе.

+0

Правильно, это при использовании DirectRunner. Честно говоря, я еще не пробовал DataflowRunner, но я тоже дам это. В настоящее время я использую v0.4.4 для продолжения локального развития, которое работает отлично. Благодаря! –

+0

Пожалуйста, добавьте ссылку на эту проблему в Google Tracker, чтобы отслеживать ее прогресс. Мой отдел также полагается на «DirectRunner» для локального тестирования и разработки и будет рад видеть, что это исправлено. Спасибо! – Juve

+0

Создан https://issues.apache.org/jira/browse/BEAM-1909, обновляющий DirectRunner. Благодарю. – chamikara