【发布时间】:2015-10-23 14:15:21
【问题描述】:
我在对 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 docs,403 rateLimitExceeded 是由concurrent rate limiting 或API request limits 引起的,但文档听起来好像这些都不适用于流式操作。
但是,错误中的message 提到了table exceeded quota for rows,这听起来更像是403 quotaExceeded 错误。 streaming quotas 是:
- 最大行大小:1 MB - 我在这个范围内 - 我的平均行大小以 KB 为单位,我特别限制大小以确保它们不会达到 1MB
- HTTP 请求大小限制:10 MB - 我在这个范围内 - 我的平均批处理大小为
- 每秒最大行数:每个表每秒 100,000 行。超过此数量将导致 quota_exceeded 错误。 - 无法想象我会结束这个 - 每批大约 500 行,每批大约需要 500 毫秒。我正在并行运行,但插入了大约 2,000 个表,因此虽然我有可能(尽管不太可能)每秒执行 100k 行,但不可能每个表都这样(更像是每个表最大 1,000 行/秒)时间>
- 每个请求的最大行数:500 - 我正好是 500
- 每秒最大字节数:每个表每秒 100 MB。超过此数量将导致 quota_exceeded 错误。 - 再一次,我的插入率在按表计算的数量上并不接近。
任何关于此速率限制的想法/建议将不胜感激!
【问题讨论】:
-
如果您可以提供您的项目/表格,我们可以详细查看可能发生的情况...该错误特定于 100k 行/秒/表格限制,不应触发如果您以 O(1000/s) 速率进行流式传输。
-
截至 2019 年 8 月,每秒 100000 行也适用于整个项目。因此,如果您的 2000 个表在同一个项目中,并且您平均每秒为每个表执行 50 次插入......
标签: google-bigquery