【问题标题】:Google Bigquery insert streamingGoogle Bigquery 插入流式传输
【发布时间】:2015-11-03 08:44:06
【问题描述】:

我正在浏览其官方网站上提供的 Google 的 Bigquery 文档。 我对谷歌的插入流配额政策有点困惑。 Here 网页上提到了以下几点。

1]Maximum row size: 1 MB 
2]HTTP request size limit: 10 MB
3]Maximum rows per second: 100,000 rows per second, per table. Exceeding this amount will cause quota_exceeded errors.
4]Maximum rows per request: 500
5]Maximum bytes per second: 100 MB per second, per table. Exceeding this amount will cause quota_exceeded errors.

我对第 3 点和第 4 点的理解感到困惑。 我们可以使用 new TableDataInsertAllRequest().setRows(rowList); 设置数据 rowList.size() 最多为 100,000。对于插入,我们可以使用 table().insertAll().execute()。

但我仍然对第 3 点和第 4 点感到困惑。 任何人都可以详细解释这一点吗? 提前致谢。

【问题讨论】:

  • 大概每个请求最多可以插入 500 行,每秒最多可以进行 200 个请求。
  • @AndyTurner 谢谢 :)

标签: google-bigquery


【解决方案1】:

假设您使用大量并行工作器来发送流式插入,例如同时发送数千台服务器。

如果您对机器正在流式传输的所有这些行求和,则可能会导致每秒超过 100k 行。每台服务器单独流式传输最多 500 个,但一个大型集群一起可以每秒流式传输超过 100k。如果达到该上限,您可能需要联系支持人员以提高您的限制。

因此,您需要了解一个有效负载必须很小且适合 500 行。如果要流式传输更多,则需要并行进行流式传输。要实现这一点,最好有一个像 Beanstalkd 这样的消息队列系统,您可以使用 beanstalkd admin console 监视您的工作。

【讨论】:

  • 我可以使用 tabledata().insertAll() 发送超过 500 行。即使我可以使用这种方法发送 1000 行。如果我弄错了,请纠正我。
  • 也许它只是暂时的,但稍后端点实现可能会改变并严格限制为最大 500。
猜你喜欢
  • 2018-05-13
  • 1970-01-01
  • 2023-03-27
  • 2021-06-28
  • 2014-10-26
  • 2017-05-10
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
相关资源
最近更新 更多