我使用极限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的计数会给出奇怪的结果)。
对如何使这件事奏效有什么想法吗?
发布于 2015-10-12 18:15:05
首先,让我们看看结果集有多大:
SELECT COUNT(*)
FROM (
SELECT ngram, decade, SUM(freq) totalfreq, SUM(books) totalbooks
FROM [otichyproject1:trigram.trigrams3]
GROUP EACH BY ngram, decade
)837,369,607 -几乎10亿寄存器输出,这就是为什么我们需要"allowLargeResults“。
请注意,我使用了“组每个”。“每个”不应该被需要,因为它是它的出路,但它改善了我在这里的运行时间。
与极限100相同,它适用于“每个”:
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因此,对这个问题的简短回答是:继续使用“组每个”(目前而言)。
https://stackoverflow.com/questions/33071129
复制相似问题