【发布时间】:2021-02-05 01:16:04
【问题描述】:
我已经阅读了一些关于 SO 和 GCP 文档的类似问题 - 但没有得到明确的答案...
有没有办法将我的 Java 服务中的数据直接批量插入 BigQuery,而不使用中间文件、PubSub 或其他 Google 服务?
这里的关键是“批处理”模式:我不想使用流式 API,因为它的成本很高。 我知道还有其他方法可以使用 Dataflow、Google Cloud Storage 等进行批量插入。我对这些不感兴趣,我需要针对我的用例以编程方式进行批量插入。
我希望使用 REST 批处理 API,但现在看来它已被弃用:https://cloud.google.com/bigquery/batch
文档指出的替代方案是:
-
https://cloud.google.com/bigquery/docs/reference/rest/v2/tabledata/insertAll REST 请求 - 但看起来它将在流模式下工作,一次插入一行(并且成本很高)
-
Java 客户端库:https://developers.google.com/api-client-library/java/google-api-java-client/dev-guide
在浏览了链接和参考资料后,我最终发现这个特定的 API 方法很有前景:https://googleapis.dev/java/google-api-client/latest/index.html?com/google/api/client/googleapis/batch/BatchRequest.html
具有以下使用模式:
Create an BatchRequest object from this Google API client instance.
Sample usage:
client.batch(httpRequestInitializer)
.queue(...)
.queue(...)
.execute();
此 API 是否使用批处理模式,而不是流式模式,是否正确?
谢谢!
【问题讨论】:
标签: java google-bigquery