我想要在大型猪关系中返回不同的行 - 在列上执行不同的操作或按列分组是否更快,然后返回组?
关于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
由于
答案 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购买一个足够大的数据集,你可以告诉时间的差异,但不要太大,只要处理你的所有数据都需要。