Hadoop 为什么在Pig中DISTINCT比GROUP BY/FOREACH快

Hadoop 为什么在Pig中DISTINCT比GROUP BY/FOREACH快,hadoop,mapreduce,apache-pig,Hadoop,Mapreduce,Apache Pig,我不知道为什么在Pig中DISTINCT比GROUP BY/FOREACH快,它们在MapReduce框架中应该是相同的,但请参考: http://pig.apache.org/docs/r0.10.0/perf.html#distinct Pig wiki说,“要从关系中的列中提取唯一值,可以使用DISTINCT或GROUP BY/GENERATE.DISTINCT是首选方法;它更快、更高效。” 为什么??工具是否以不同的方式实现?distinct的输出是一种关系,它只包含您对其执行dist

我不知道为什么在Pig中DISTINCT比GROUP BY/FOREACH快,它们在MapReduce框架中应该是相同的,但请参考:

http://pig.apache.org/docs/r0.10.0/perf.html#distinct
Pig wiki说,“要从关系中的列中提取唯一值,可以使用DISTINCT或GROUP BY/GENERATE.DISTINCT是首选方法;它更快、更高效。”


为什么??工具是否以不同的方式实现?

distinct的输出是一种关系,它只包含您对其执行distinct操作的列,因此映射作业只输出指定列的值,作为键和组合器将映射溢出输出最小化,从而进一步减少减速机的输入。 Group By的输出是一个“Group”键元组和一个包,其中包含所有元组,这些元组与原始关系的所有列具有相同的组键,因此不使用组合器,映射阶段的输出更大,还原器有更多的输入。Pig可以做一些优化,但它们并没有得到保证