Pig Distinct vs Group By

时间:2014-04-28 15:01:37

标签: apache-pig

我想要在大型猪关系中返回不同的行 - 在列上执行不同的操作或按列分组是否更快,然后返回组?

关于A:

的Exmaple数据
id_a    id_b    counts 
GG       AA       29 
GG       AA       29 
GG       BC       34 
GG       BC       34 
AA       DD       44 

不同的例子:

distinct_A = distinct A; 
dump distinct_A 

vs

逐个示例:

grouped_A = group A by (id_a,id_b,counts); 
projected_group = foreach grouped_A generate group; 
dump projected_group 

由于

2 个答案:

答案 0 :(得分:2)

答案取决于您的Pig版本,但对于最新版本 DISTINCT应该更快

  

在猪0.1.x中,DISTINCT只是引擎盖下的GROUP BY / PROJECT。在猪0.​​2.0它不是,它更快更有效(取决于你的关键基数,猪队的测试速度提高了20倍)。因此,建议在GROUP BY - GENERATE上使用DISTINCT。

来源:http://pig.apache.org/docs/r0.7.0/cookbook.html#Prefer+DISTINCT+over+GROUP+BY+-+GENERATE

答案 1 :(得分:0)

您的意思是grouped_A = group A by (id_a,id_b,counts);吗?

另外我建议测试它以找出答案。我怀疑Distinct会更快。但最好的方法是使用LIMIT购买一个足够大的数据集,你可以告诉时间的差异,但不要太大,只要处理你的所有数据都需要。