Chi*_*ron 19 sql hadoop hive distinct
对于最简单的情况,我们都提到:
select id from mytbl
group by id
Run Code Online (Sandbox Code Playgroud)
和
select distinct id from mytbl
Run Code Online (Sandbox Code Playgroud)
正如我们所知,它们会生成相同的查询计划,这些计划在某些项目中反复提及,例如哪个更好:Distinct或Group By
然而,在蜂巢中,前者只有一个减少任务,而后者有许多.
通过实验,我发现GROUP BY 比DISTINCT快10倍.
它们是不同的.
所以我学到的是:
无论如何,GROUP-BY并不比DISTINCT差,有时它更好.
我想知道:
1.如果这个结论是真的.
2.如果为真,我会将DISTINCT视为一种方便的逻辑方法,但为什么DISTINCT不采用GROUP-BY更好的实现?
3.如果不对,我会非常渴望知道它在大数据情况下的体面使用.
非常感谢你!!:)
Gor*_*off 15
你的经历很有趣.我还没有看到对单一减速效果distinct对比group by.也许两个结构之间的优化器有一些细微的差别.
Hive中一个"着名"的例子是:
select count(distinct id)
from mytbl;
Run Code Online (Sandbox Code Playgroud)
与
select count(*)
from (select distinct id
from mytbl
) t;
Run Code Online (Sandbox Code Playgroud)
前者仅使用一个减速器,后者并联运行.我在我的经验中已经看到了这一点,并且记录和讨论了它(例如,在本演示文稿中的幻灯片26和27 ).所以,distinct绝对可以利用并行性.
我想,随着Hive的成熟,这些问题将得到解决.然而,具有讽刺意味的是Postgres有类似的性能问题COUNT(DISTINCT),尽管我认为其根本原因有点不同.