当 Google Big Query 大型表(1.05 亿条记录)包含“Order Each by”子句时,我遇到了严重问题“资源超出查询执行”。
这是示例查询(使用公共(public)数据集:维基百科):
SELECT Id,Title,Count(*) FROM [publicdata:samples.wikipedia] Group EACH by Id, title Order by Id, Title Desc
如何在不添加 Limit 关键字的情况下解决此问题。
最佳答案
在大数据数据库上使用order by并不是一个普通的操作,在某些方面它超出了大数据资源的属性。您应该考虑对查询进行分片或在导出的数据中运行订单。
正如我今天在 your other question 中向您解释的那样,添加 allowLargeResults
将允许您返回大型响应,但您不能指定顶级 ORDER BY、TOP 或 LIMIT 子句。这样做会抵消使用 allowLargeResults
的好处,因为无法再并行计算查询输出。
您可以尝试的一个选项是对查询进行分片。
where ABS(HASH(Id) % 4) = 0
您可以多次使用上述参数来获得更小的结果集,然后进行组合。
另请阅读Chapter 9 - Understanding Query Execution它解释了内部分片的工作原理。
关于google-cloud-platform - 带有 'Order Each by' 子句的 Google BigQuery 大表(105M 记录)产生 "Resources Exceeds Query Execution"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31289526/