查询执行期间资源超出

Posted

技术标签:

【中文标题】查询执行期间资源超出【英文标题】:resource exceeded during query execution 【发布时间】:2014-09-23 11:17:28 【问题描述】:

以下查询在 bigquery 上遇到 查询执行期间超出资源 错误。处理的数据大约是 700 MB ,这并不像 bigquery 控制台上显示的那么多。我们正在使用 group each by,因为在使用 group by 时,我们会遇到相同的错误以及使用 group each by 的建议。关联的作业 ID 是

作业 ID:fast-chess-620:job_41Fq1q3zFGB3FsACtuAiymTOCIU(按以下分组)

作业 ID:fast-chess-620:job_VVd2jPGX-nHsdZW5GlEU6bBgpnU(分组依据)

select col_1,col_2, count(col_3) from
(select col_1, col_2, col_3 from
(select col_1, date(sec_to_timestamp(col_4)) as col_2, count(col_5) as col_3 from 
(TABLE_DATE_RANGE(table_prefix_1_,
date_add(usec_to_timestamp(utc_usec_to_month(now())), -6, "MONTH"), 
date_add(usec_to_timestamp(utc_usec_to_month(now())), -1, "MONTH"))),
(TABLE_DATE_RANGE([table_prefix_2_],
usec_to_timestamp(utc_usec_to_month(now())),
usec_to_timestamp(utc_usec_to_day(now()))))
group each  by 1,2 order by 1,2) x) x
group each by 1,2 order by 1,2

您能帮我们解决问题吗?

【问题讨论】:

完成需要多长时间? 【参考方案1】:

看起来问题出在 ORDER BY 上。请参阅 *** 响应 here。

查看查询的日志,group by 产生了超过 1500 万条结果。为了对它们进行排序,bigquery 必须在单个节点中执行排序操作。

您真的需要排序结果吗?如果你这样做,你需要所有的结果吗?如果您使用带有 LIMIT 的 ORDER BY,它应该会成功,因为它可以只保留最高值。

如果您满足以下条件,您应该能够成功运行此查询:

    对两个 GROUP BY 操作都使用 GROUP EACH BY(您已经拥有)。 删除内部 ORDER BY,因为它实际上没有帮助,因为外部查询会重新排序。 它可能只适用于 #1 和 #2,但我还建议删除外部 ORDER BY 或添加 LIMIT 约束。

【讨论】:

以上是关于查询执行期间资源超出的主要内容,如果未能解决你的问题,请参考以下文章

查询执行期间资源超出

Big Query 抛出“查询执行期间超出资源”

查询执行期间资源超出。大查询

查询错误:查询执行期间资源超出:无法在分配的内存中执行查询

BigQuery:如何避免“查询执行期间超出资源”。错误

当我使用 join each 时,查询执行期间资源超出