【发布时间】:2022-10-18 05:15:37
【问题描述】:
我创建了一个谷歌数据流流作业来从 PubSub 读取并插入 BigQuery。我正在使用 STREAMING_INSERT api 将 JSON 数据插入 BiqQuery 表。我面临插入问题,说明请求大小超过了 10 Mb 的允许限制。数据流错误如下所示。每条记录的大小为 1-2Mb,根据我的理解,数据流作业将流数据插入为导致此错误的微批处理。
您能否为此提供一些解决方案。
来自工作人员的错误消息:java.lang.RuntimeException:我们有 观察到大小为 24625273 字节的行。 BigQuery 支持 请求大小最大为 10MB,并且此行太大。你可以改变 您解除阻塞此管道的重试策略,该行将是 输出为插入失败。 org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$DatasetServiceImpl.insertAll(BigQueryServicesImpl.java:1088) org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$DatasetServiceImpl.insertAll(BigQueryServicesImpl.java:1242) org.apache.beam.sdk.io.gcp.bigquery.BatchedStreamingWrite.flushRows(BatchedStreamingWrite.java:403) org.apache.beam.sdk.io.gcp.bigquery.BatchedStreamingWrite.access 900 美元(BatchedStreamingWrite.java:67)
BigQuery 插入的代码 sn-p 如下
.apply( "WriteSuccessfulRecords", BigQueryIO.writeTableRows().withAutoSharding() .withoutValidation() .withCreateDisposition(CreateDisposition.CREATE_NEVER) .withWriteDisposition(WriteDisposition.WRITE_APPEND) .withExtendedErrorInfo() .withMethod(BigQueryIO.Write.Method.STREAMING_INSERTS) .withFailedInsertRetryPolicy(InsertRetryPolicy.retryTransientErrors()) .to(options.getOutputTableSpec()));
【问题讨论】:
标签: java google-bigquery streaming google-cloud-dataflow apache-beam