带有'Order Each by'子句的Google BigQuery大表(105M条记录)会产生“资源超过查询执行”错误

sel*_*mar 1 google-bigquery

我在使用“ Order Each by ”子句的Google Big Query大表(105M条记录)时遇到严重问题“ Resources Exceeds Query Execution ” 。

这是示例查询(使用公共数据集:Wikipedia):

SELECT Id,Title,Count(*) FROM [publicdata:samples.wikipedia] Group EACH by Id, title Order by Id, Title Desc
Run Code Online (Sandbox Code Playgroud)

如何在不添加Limit关键字的情况下解决此问题。

Pen*_*m10 5

在大数据数据库上使用按序排序是一项不常见的操作,在某种程度上,它超出了大数据资源的属性。您应该考虑在导出的数据中分片查询或运行订单。

正如我今天在另一个问题中向您解释的那样,添加allowLargeResults将允许您返回较大的响应,但是您无法指定顶级ORDER BY,TOP或LIMIT子句。这样做会抵消使用的好处allowLargeResults,因为查询输出不再可以并行计算。

您可以尝试的一种选择是分片查询。

where ABS(HASH(Id) % 4) = 0
Run Code Online (Sandbox Code Playgroud)

您可以大量使用上述参数来获得较小的结果集,然后进行组合。

另请阅读第9章-了解查询执行,它说明了内部分片的工作方式。

您还应该阅读BigQuery的启动清单


归档时间:

查看次数:

524 次

最近记录:

6 年 前