BigQuery 中的查询作业中的 allowLargeResults

Posted

技术标签:

【中文标题】BigQuery 中的查询作业中的 allowLargeResults【英文标题】:allowLargeResults in Query job in BigQuery 【发布时间】:2016-09-06 10:21:46 【问题描述】:

我正在尝试在 BigQuery 中运行查询作业并收到以下错误:

响应太大而无法返回。考虑将 allowLargeResults 设置为 在您的工作配置中为 true

我知道我需要在我的作业配置中将 allowLargeResults 设置为 True,但是我还必须提供一个目标表字段。

我不想将查询的结果插入到特定的表中,只想在本地处理它。 我该如何处理这种情况?

【问题讨论】:

【参考方案1】:

我不想将查询结果插入特定表, 只在本地处理它。

想澄清一下——希望您对使用目标表感觉更好: 实际上,任何查询结果都会出现在某个表中! 如果结果小于 128MB - BigQuery 代表您创建临时表(在名称以下划线开头的特殊数据集中,因此它在 Web UI 数据集/表导航器中不可见)。 这个临时表是 24 小时可用的,如果你使用 Query Cashing 或者你甚至可以自己使用它,你只需要找到创建的表就可以使用它。你可以在 API 中找到它——目标表——正如我上面所说的,即使你没有设置特定的表,它也存在。或者你可以在 Web UI 中找到它

当结果大于 128MB 时 - 您必须设置目标表。在您的情况下,唯一的缺点是您需要确保在不再需要此表后将其删除,否则您将支付存储费用

您可以通过实际删除表来执行此操作 - 手动(在 UI 中)或以编程方式(API)。或者您可以在表上设置过期时间(API)

【讨论】:

【参考方案2】:

首先,如果它意味着它太大,那么可能大于 128MB。你需要确保你的查询是准确的,如果你确实想要返回大数据。通常人们在查询中会犯错误,例如连接爆炸、缺少时间过滤器以减少数据或缺少限制。

确定数据太大后,需要先写入表,然后导出到GCS,再下载,再处理。

https://cloud.google.com/bigquery/docs/exporting-data#exportingmultiple

【讨论】:

以上是关于BigQuery 中的查询作业中的 allowLargeResults的主要内容,如果未能解决你的问题,请参考以下文章

Bigquery:无效:非法模式更新

BigQuery:写入查询结果时使用 bigquery 作业的意外行为

提取操作中的 BigQuery 错误:错误处理作业意外。请再试一次

如何限制 Google Bigquery 中的作业数量 [关闭]

无法将表从 BigQuery 导出到 Google Cloud Storage

通过 Google BigQuery API 将查询结果导出为 JSON