google.api_core.exceptions.ResourceExhausted: 429 查询 bigquery 时收到的消息大于最大值

Posted

技术标签:

【中文标题】google.api_core.exceptions.ResourceExhausted: 429 查询 bigquery 时收到的消息大于最大值【英文标题】:google.api_core.exceptions.ResourceExhausted: 429 Received message larger than max when querying bigquery 【发布时间】:2020-10-12 14:26:55 【问题描述】:

我遇到了一个问题,我尝试查询 BQ 并将其放入 AI 作业内的 pandas 数据框中。错误如下:

google.api_core.exceptions.ResourceExhausted:429 收到的消息大于最大值(4364379 与 4194304)

这似乎表明有一些元数据与超过 4MB 的查询结果一起发送,因为查询本身的数量级大于 4MB。

问题是,当我通过 google cloud bigquery 包发送查询时如何更改此设置?我的代码如下所示:

bqstorage_client = BigQueryReadClient(credentials=credentials)

client = bigquery.Client(
    credentials=credentials,
    project='PROJECT_NAME'
)


sql_query = 'QUERY STRING'


df = client.query(sql_query).to_dataframe(bqstorage_client=bqstorage_client)

如果我将其更改为一个简单的查询,这确实有效,但发回的元数据似乎有一些任意限制,有没有办法改变这个限制?

【问题讨论】:

【参考方案1】:

乍一看,这可能是 grpc 通道设置的问题,但需要更多详细信息才能调查。您能否在https://github.com/googleapis/python-bigquery/issues 上提出问题并提供更多信息?

需要包含的有用内容是您环境中的包版本(例如pip freeze 或类似),以及有关查询/结果形状的一些基本细节。如果您设置了任何带有 GRPC 前缀的环境变量,请将它们也包括在内。

【讨论】:

【参考方案2】:

如果你有一堆数组列,大查询会发送大量元数据,我在查询中取消嵌套表,这个问题就消失了。

【讨论】:

我仍然鼓励您提交有关详细信息的问题。作为缓解措施,这应该不是必需的。

以上是关于google.api_core.exceptions.ResourceExhausted: 429 查询 bigquery 时收到的消息大于最大值的主要内容,如果未能解决你的问题,请参考以下文章