为什么我的BigQuery流媒体插入速率有限?

时间:2015-10-23 14:15:21

标签: google-bigquery

在对BigQuery进行流式处理插入时出现403 rateLimitExceeded错误。我并行做了很多流式插入,所以虽然我知道这可能会导致一些速率限制,但我不确定这个问题的速率限制是什么。

这是我得到的:

{ "code" : 403, "errors" : [ { "domain" : "global", "message" : "Exceeded rate limits: Your table exceeded quota for rows. For more information, see https://cloud.google.com/bigquery/troubleshooting-errors", "reason" : "rateLimitExceeded" } ], "message" : "Exceeded rate limits: Your table exceeded quota for rows. For more information, see https://cloud.google.com/bigquery/troubleshooting-errors" }

基于BigQuery's troubleshooting docs403 rateLimitExceededconcurrent rate limitingAPI request limits引起,但文档使其听起来既不适用于流媒体操作。

但是,错误中的message会提及table exceeded quota for rows,这听起来更像是403 quotaExceeded错误。 streaming quotas是:

  • 最大行数:1 MB - 我在这个 - 我的平均行大小是KB,我特别限制大小以确保它们不会达到1MB
  • HTTP请求大小限制:10 MB - 我在此之下 - 我的平均批量大小是< 400KB和max是< 1MB
  • 每秒最大行数:每个表每秒100,000行。超过此金额将导致quota_exceeded错误。 - 无法想象我会超过这个 - 每批约500行,每批约需500毫秒。我正在并行运行,但是插入大约2,000个表,所以虽然我可能(尽管不太可能)我正在做100k行/秒,但是没有办法每个表(更像每个表最多1000行/秒)
  • 每个请求的最大行数:500 - 我是500
  • 每秒最大字节数:每个表每秒100 MB。超过此金额将导致quota_exceeded错误。 - 同样,我的插入率并非靠近此表的任何数据。

对于这个限速是什么的任何想法/建议将不胜感激!

1 个答案:

答案 0 :(得分:2)

我怀疑你偶尔会在一张桌子上每秒提交超过100,000行。偶尔你的平行插入过程可能会排在同一张桌子上吗?

这被报告为速率限制错误的原因是给出一个减速信号减速:为了处理单个表上的零星操作峰值,您可以退回并再次尝试将负载分散。

这与配额失败不同,配额失败意味着重试仍会失败,直到配额纪元翻身(例如,每日配额限制)。