BigQuery поддерживает дедупликацию при потоковой вставке. Как я могу использовать эту функцию с помощью Apache Beam?
https://cloud.google.com/bigquery/streaming-data-into-bigquery#dataconsistency
Чтобы обеспечить согласованность данных, вы можете указать insertId для каждой вставленной строки. BigQuery запоминает этот идентификатор как минимум одну минуту. Если вы попытаетесь передать тот же набор строк в течение этого периода времени и задано свойство insertId, BigQuery использует свойство insertId, чтобы максимально эффективно исключить дублирование ваших данных. Возможно, вам придется повторить попытку вставки, потому что нет способа определить состояние потоковой вставки при определенных условиях ошибки, таких как сетевые ошибки между вашей системой и BigQuery или внутренние ошибки в BigQuery. Если вы повторите попытку вставки, используйте тот же insertId для того же набора строк, чтобы BigQuery мог попытаться исключить дублирование ваших данных. Дополнительные сведения см. В разделе «Устранение неполадок с потоковыми вставками».
Я не могу найти такую функцию в Java doc. https://beam.apache.org/releases/javadoc/2.9.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIO.Write.html
В этом вопросе он предлагает установить insertId в TableRow. Это верно?
В клиентской библиотеке BigQuery есть эта функция.
https://googleapis.github.io/google-cloud-java/google-cloud-clients/apidocs/index.html?com/google/cloud/bigquery/package-summary.html https://github.com/googleapis/google-cloud-java/blob/master/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/InsertAllRequest.java#L134