查询执行期间资源超出
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 约束。
【讨论】:
以上是关于查询执行期间资源超出的主要内容,如果未能解决你的问题,请参考以下文章