如何使用流insertAll在BigQuery中插入38000条记录?



我正在尝试使用流式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个集群的数据。

相关内容

  • 没有找到相关文章

最新更新