2016-05-31 56 views
2

我們tabledata.list過程中遇到錯誤與消息:BigQuery API進行超限錯誤

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] 

這是什麼意思?我們如何解決這個錯誤?

回答

4

抱歉給您帶來不便。

這是一個已知的tabledata.list方法問題。 問題是我們有一些基礎設施限制,目前不可能從tabledata.list返回非常大的大的行。

是一個相對詞。不幸的是,某些行在使用json表示時體積較小,但以內部格式表示時可能會消耗大量內存。

當前的解決方法如錯誤消息中所述:導出表。

從長遠來看,我們正在積極努力改進我們的系統以克服這一限制。繼續關注:)

+0

你能否多透露一點? 所以,我已經導出了這張表。這個「壞」行在導出,不是嗎? 看來,這個問題不是常規數據類型(如Int/String)。順便說一句,最長的字符串在該表中是5Kb(40+字段)。 我們的模式中有2個重複的字段(字符串)。最大包含27個重複值,共450字節。 在寫入BQ之前,我們想介紹一下合理的限制。但我們沒有任何想法,「合理的」是什麼。 –

0

存在用於tabledata.list兩個行相關的限制:

  1. 的原消息的字節尺寸必須小於10M。如果一行大於此大小,我們無法檢索它。

  2. 行中的最大字段值必須小於350,000,即行的葉字段數。

如果碰到這個問題,它通常只意味着你的要求第一行是太大,回報,如果你跳過該行,以下行檢索可能會奏效。你可以試着看看特定的行,看看爲什麼。

未來,可能會刪除字段值限制,但由於API服務器限制,我們仍然會有10M大小限制。