2015-11-19 2 views
3

Я нашел связанную пару вопросы, но нет окончательного ответа от команды Google, для этого конкретного вопроса:Dataflow в BigQuery квоту

является работой Облака DataFlow, писать в BigQuery, ограниченного в BigQuery квоту 100K строка -per-second-per-table (т. е. предел потока BQ)?

google dataflow write to bigquery table performance

Cloud DataFlow performance - are our times to be expected?


Edit: Основная мотивация найти способ предсказать время автономной работы для различных размеров входного сигнала.

Мне удалось выполнить задания, которые показывают> 180 тыс. Строк в секунду, через интерфейс мониторинга потока данных. Но я не уверен, что это как-то затухает на вставке в таблицу, так как время выполнения задания было медленнее примерно на 2x, чем наивный расчет (500-миллиметровые ряды/180 тыс. Строк/сек = 45 минут, что фактически заняло почти 2 часа)

ответ

6

Из вашего сообщения, похоже, что вы выполняете свой конвейер в пакетном, а не потоковом режиме.

В пакетном режиме задания, выполняемые в службе Google Cloud Dataflow, не используют потоковые записи BigQuery. Вместо этого мы записываем все строки для импорта в файлы GCS, а затем вызываем BigQuery load" job. Обратите внимание, что это снижает ваши затраты (загрузочные задания дешевле, чем потоковая запись) и более эффективен в целом (BigQuery может быстрее выполнять массовую загрузку, чем делать импорт в каждой строке). Компромисс заключается в том, что в BigQuery результаты не будут получены до тех пор, пока вся работа не завершится успешно.

Работы по загрузке не ограничены определенным количеством строк в секунду, а ограничено daily quotas.

В потоковом режиме, Dataflow действительно использует потоковые записи BigQuery. В этом случае применяется предел в 100 000 строк в секунду. Если вы превысите этот предел, Dataflow получит ошибку quota_exceeded и повторит попытку вставки. Такое поведение поможет сгладить кратковременные всплески, которые временно превысят квоту BigQuery; если ваш конвейер превышает квоту в течение длительного периода времени, эта политика отказов и повторных попыток в конечном итоге будет действовать как форма противодавления, которое замедляет работу вашего трубопровода.

-

А почему ваша работа ушла 2 часа вместо 45 минут, ваша работа будет иметь несколько этапов, которые протекают последовательно, и поэтому использование пропускной способностью быстрой стадии не является точным способом оценки конца -то-конец. Например, задание загрузки BigQuery не запускается до тех пор, пока Dataflow не закончит запись всех строк в GCS. Ваши ставки кажутся разумными, но, пожалуйста, проследите, если вы подозреваете ухудшение производительности.

+1

Да, просто хотел подтвердить, что мы выполняем задания в пакетном режиме, а время соответствует заданию загрузки GCS + BQ, написанному вручную. Спасибо за подробное объяснение - очень полезно! –

Смежные вопросы