который лучше BigqueryIO.write () или bigquery.insertAll () метод для потока данных - PullRequest
0 голосов
/ 04 марта 2019

Я занимаюсь разработкой Java-кода для чтения записей из GCS и вставки в таблицы BQ, что является лучшим методом BigqueryIO.write () или bigquery.insertAll () с точки зрения затрат и производительности.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

BigQueryIO предпочтительнее, поскольку он является частью Beam, и поэтому конвейер понимает записи, отправляемые в BigQuery.Это означает, что его можно отслеживать, повторные попытки встроены и т. Д. BigQueryIO.Write фактически позволяет вам выбирать, использовать ли загрузочное задание или потоковые вставки с помощью параметра withMethod.

0 голосов
/ 05 марта 2019

Если вы используете Dataflow, ваш предпочтительный метод должен использовать BigQueryIO от Beam - этот класс обладает обширными знаниями о наилучшем способе обработки ошибок и различных методах отправки данных в BigQuery.

2 метода, которые вы можете выбрать с помощью BigQueryIO.Write :

FILE_LOADS :

Использование заданий загрузки BigQuery для вставкиданные.Записи сначала будут записаны в файлы, и эти файлы будут загружены в BigQuery.Это метод по умолчанию, когда ввод ограничен.Этот метод может быть выбран и для неограниченных входов, если частота запуска также установлена ​​с помощью BigQueryIO.Write.withTriggeringFrequency.BigQuery имеет суточные квоты на количество разрешенных заданий в день, поэтому будьте осторожны, чтобы не устанавливать частоту срабатывания слишком часто.Дополнительную информацию см. В разделе Загрузка данных из облачного хранилища.

STREAMING_INSERTS :

Используйте API для вставки потокового ввода BigQuery для вставки данных.Это обеспечивает путь вставки с наименьшей задержкой в ​​BigQuery и, следовательно, является методом по умолчанию, когда ввод неограничен.BigQuery приложит все усилия, чтобы избежать дублирования при использовании этого пути, однако есть некоторые сценарии, в которых BigQuery не может дать такую ​​гарантию.Запрос может быть запущен по выходной таблице, чтобы периодически очищать эти редкие дубликаты.Кроме того, использование метода вставки FILE_LOADS не гарантирует дублирование, хотя задержка для вставки в BigQuery будет намного выше.Для получения дополнительной информации см. Потоковая передача данных в BigQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...