BigQuery API限制超出错误

时间:2016-05-31 13:53:21

标签: google-bigquery

我们在tabledata.list中遇到错误消息:

API limit exceeded: Unable to return a row that exceeds the API limits. To retrieve the row, export the table.

未列在https://cloud.google.com/bigquery/troubleshooting-errors#errortable

每次都会出现此错误。

我们可以正常将此表导出到GCS中。结果看起来正常(没有非常大的行)。

我们设法在发生实际错误之前检索多个结果页面。

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "API limit exceeded: Unable to return a row that exceeds the API limits. To retrieve the row, export the table.",
    "reason" : "apiLimitExceeded"
  } ],
  "message" : "API limit exceeded: Unable to return a row that exceeds the API limits. To retrieve the row, export the table."
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145) ~[com.google.api-client.google-api-client-1.21.0.jar:1.21.0]
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113) ~[com.google.api-client.google-api-client-1.21.0.jar:1.21.0]
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40) ~[com.google.api-client.google-api-client-1.21.0.jar:1.21.0]
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321) ~[com.google.api-client.google-api-client-1.21.0.jar:1.21.0]

这是什么意思?我们如何解决此错误?

2 个答案:

答案 0 :(得分:4)

抱歉给您带来不便。

这是tabledata.list方法的已知问题。 问题是我们有一些基础设施限制,目前无法从tabledata.list返回非常 large 行。

是一个相对的词。不幸的是,在json中表示某些行的大小很小,但在以内部格式表示时会消耗大量内存。

当前的解决方法如错误消息中所述:导出表。

从长远来看,我们正积极致力于改善我们的系统以克服这一局限。敬请关注:)

答案 1 :(得分:0)

tabledata.list有两个与行相关的限制:

  1. 原型消息的字节大小必须小于10M。如果一行大于此大小,我们无法检索它。

  2. 行中的最大字段值必须小于350,000,即行的叶字段数。

  3. 如果遇到该问题,通常只表示请求中的第一行太大而无法返回,如果跳过该行,则以下行检索可能有效。您可以尝试查看特定行,以了解原因。

    将来可能会删除字段值限制,但由于API服务器的限制,我们仍然会有10M的大小限制。