Поток данных: можно ли выполнять непрерывную / потоковую запись в BigQuery с помощью пакетного задания? - PullRequest
0 голосов
/ 08 июня 2018

Не могу найти документацию по этому поводу.У меня есть конвейер apache-beam, который принимает некоторую информацию, форматирует ее в TableRows и затем записывает в BigQuery.

[+] Проблема:

Строки не являютсязаписывается в BigQuery до завершения задания потока данных.Если у меня есть задание Dataflow, которое занимает много времени, я бы хотел видеть строки, вставляемые в BigQuery, может кто-нибудь указать мне правильное направление?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Поскольку вы работаете в пакетном режиме , данные должны быть одновременно записаны в одной и той же таблице.Если вы работаете с разделами, все данные, принадлежащие разделу, должны быть записаны одновременно .Вот почему вставка выполняется последней.

Обратите внимание, что WriteDisposition очень важно, когда вы работаете в пакетах, потому что вы либо добавляете данные, либо усекаете их.Но имеет ли это различие смысл для потоковых конвейеров?

В Java вы можете указать метод вставки с помощью следующей функции:

.withMethod(BigQueryIO.Write.Method.STREAMING_INSERTS))

Я не проверял это, но я считаю,это должно работать как ожидалось.Также обратите внимание, что потоковые вставки в BigQuery не бесплатны .

0 голосов
/ 12 июня 2018

В зависимости от сложности вашей начальной операции transform + load, вы можете просто использовать драйвер больших запросов для потоковой вставки в таблицу из собственного рабочего пула, а не загружать ее явно через задание потока данных.

В качестве альтернативы вы можете сделать меньшие партии:

  • N Независимые задания при каждой загрузке TIME_PERIOD / N объемов данных
...