簡體   English   中英

如何使用流式 insertAll 在 BigQuery 中插入 38000 條記錄?

[英]How to insert 38000 records in BigQuery using streaming insertAll?

我正在嘗試使用 Streaming 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 行,但使用代表性數據(模式和數據大小)進行試驗將幫助您確定理想的批量大小。

嘗試將數據分成塊。

確定您可以在其上創建不同 Custer 數據的文件的最佳方法。 一旦您根據已識別的字段(例如 id、日期等)識別了不同的集群,然后嘗試單獨加載每個集群數據。 前提是每個集群數據小於最大限制 (10K)。 您還需要確保同時加載每 n 個集群數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM