我正在尝试使用流式insertAll
方法在BigQuery中插入38000条记录。
但首先我得到的错误是:
Insert operation not performed
com.google.cloud.bigquery.BigQueryException: Read timed out
然后将超时时间增加为:
RetrySettings retrySetting = RetrySettings.newBuilder().setTotalTimeout(Duration.ofMinutes(90))
.build();
BigQueryOptions bigqueryOptions = BigQueryOptions.newBuilder()
.setRetrySettings(retrySetting).build();
BigQuery bigquery = bigqueryOptions.getDefaultInstance().getService();
…我得到另一个错误:
Insert operation not performed
com.google.cloud.bigquery.BigQueryException: Connection reset
请帮助,我如何在BigQuery中插入所有记录?
也许你达到了极限:
每个请求最大行数:10,000行
最多500条建议设置为行。批处理可以提高性能和吞吐量在某种程度上,但代价是每个请求的延迟。每行数太少请求和每个请求的开销都可以进行摄取效率低下。每个请求的行数太多,吞吐量可能会下降。
建议每个请求最多500行,但请进行试验具有代表性的数据(模式和数据大小)将对您有所帮助确定理想的批量大小。
尝试将数据分割成块。
识别一个可以在其上创建不同库斯特数据的文件的最佳方法。一旦你根据已识别的文件(如id,日期等)确定了不同的集群,然后尝试单独加载每个集群数据。前提是每个集群的数据小于最大限制(10K)。您还需要确保同时加载每n个集群的数据。