当前位置: 首页 > 知识库问答 >
问题:

超出BigQuery API限制错误

叶声
2023-03-14

tabledata期间出错。包含消息的列表:

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个答案

张绍晖
2023-03-14

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

>

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

    行中的最大字段值必须小于350000,即一行的叶字段数。

    如果您遇到这个问题,通常只意味着请求中的第一行太大而无法返回,如果您跳过该行,以下行检索可能会起作用。您可以尝试仔细查看特定行以了解原因。

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

  • 施轶
    2023-03-14

    很抱歉给您带来不便。

    这是tabledata的一个已知问题。列表方法。问题是,我们有一些基础架构限制,目前无法从tabledata返回非常大的行。列表

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

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

    从长远来看,我们正在积极努力改进我们的制度,以克服这一限制。请继续关注:)

     类似资料:
    • 当我执行我的测试时,我得到了这个错误消息: 我知道什么是,但GC开销限制意味着什么?我怎样才能解决这个问题?

    • 我正在IntelliJ Idea Ultimate Edition 2020.2.2上运行Grails 2.5.0。它可以很好地编译和构建代码,但它会不断抛出“java.lang.OutOfMemoryError:超出GC开销限制”错误(整个错误都是复制并粘贴在最后)。以下是我在研究这个错误的基础上尝试的东西: 1)增加构建进程堆大小(在2G、4G和6G下尝试)https://intellij-s

    • 问题内容: 我执行JUnit测试时收到以下错误消息: 我知道是什么OutOfMemoryError,但是GC开销限制是什么意思?我该如何解决? 问题答案: 该消息表示由于某种原因,垃圾收集器占用了过多的时间(默认情况下为该进程所有CPU时间的98%),并且每次运行时恢复的内存很少(默认为堆的2%)。 这实际上意味着你的程序停止任何进展,并且一直在忙于仅运行垃圾回收。 为了防止你的应用程序浪费CPU

    • 我有一个java Spring应用程序在AWS C4上运行。大(4 Gb内存)与Apache Tomcat 8.我得到java.lang.OutOfMemoryError GCOverhead限制超过错误,同时在服务器启动期间实例化30000条记录的bean。 引起原因:org.springframework.beans.BeanInstantiation异常:未能实例化[java.lang.字符

    • 使用当我尝试构建我的项目时,这种错误越来越多: 错误:任务“:app:CompiledEbugJavaWithJavac”执行失败。OutofMemoryError:超出GC开销限制 有什么办法解决这个问题吗?

    • 我正在尝试预处理一个大的txt文件(10G),并将其存储在二进制文件中以备将来使用。当代码运行时,速度会减慢,并以 异常线程"main"java.lang.OutOfMemoryError: GC开销限制超过 输入文件具有以下结构 这是我正在使用的代码: 基本上,它通过in文件并将数据存储到对象HMbicnt(这是一个哈希映射)。一旦在第二列中遇到新值,它应该将对象写入输出文件,释放内存并继续。