我用LIMIT 100尝试了以下查询,并得到了“查询执行期间超出资源”(otichyproject1:job_1mpw4aDtTHmbduBdKSBu5ty1DXY),所以我尝试将其输出到新表中并允许较大结果。它运行了更长的时间,但是由于“内部错误”而失败(otichyproject1:job_6pFUlj2AzdROUyAU8nZ9dGdo3ms)。
SELECT
ngram, decade, SUM(freq) totalfreq, SUM(books) totalbooks
FROM
trigram.trigrams3
GROUP BY
ngram, decade
表trigrams3源自公共trigram数据集,并且应较小(尽管trigram上的COUNT给出了奇怪的结果)。
关于如何进行这项工作的任何想法?
首先,让我们看看结果集有多大:
SELECT COUNT(*)
FROM (
SELECT ngram, decade, SUM(freq) totalfreq, SUM(books) totalbooks
FROM [otichyproject1:trigram.trigrams3]
GROUP EACH BY ngram, decade
)
837,369,607-几乎有十亿个寄存器要输出,这就是为什么我们需要“ allowLargeResults”。
请注意,我使用了“ GROUP EACH”。不需要使用“ EACH”,因为它已经淘汰了,但是它为我增加了运行时间。
与LIMIT 100相同,它与“ EACH”一起使用:
SELECT
ngram, decade, SUM(freq) totalfreq, SUM(books) totalbooks
FROM
trigram.trigrams3
GROUP EACH BY
ngram, decade
LIMIT 100
如果我使用“ EACH”和“ AllowLargeResults”进行尝试,则将所有结果输出到新表的查询仅在20秒内运行:
SELECT ngram, decade, SUM(freq) totalfreq, SUM(books) totalbooks
FROM [otichyproject1:trigram.trigrams3]
GROUP EACH BY ngram, decade
因此,此问题的简短答案是:继续使用“ GROUP EACH”(目前)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句