我们在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]
这是什么意思?我们如何解决此错误?
答案 0 :(得分:4)
抱歉给您带来不便。
这是tabledata.list方法的已知问题。 问题是我们有一些基础设施限制,目前无法从tabledata.list返回非常 large 行。
大是一个相对的词。不幸的是,在json中表示某些行的大小很小,但在以内部格式表示时会消耗大量内存。
当前的解决方法如错误消息中所述:导出表。
从长远来看,我们正积极致力于改善我们的系统以克服这一局限。敬请关注:)
答案 1 :(得分:0)
tabledata.list有两个与行相关的限制:
原型消息的字节大小必须小于10M。如果一行大于此大小,我们无法检索它。
行中的最大字段值必须小于350,000,即行的叶字段数。
如果遇到该问题,通常只表示请求中的第一行太大而无法返回,如果跳过该行,则以下行检索可能有效。您可以尝试查看特定行,以了解原因。
将来可能会删除字段值限制,但由于API服务器的限制,我们仍然会有10M的大小限制。