在猪中投射分组元组

时间:2012-05-29 23:39:49

标签: apache-pig

我有一个形式(t,a,b)的元组集合,我想在猪群中按b分组。分组后,我想从每个组中的元组中过滤掉b,并为每个组生成一包过滤后的元组。

举个例子,假设我们有 (1,2,1) (2,0,1) (3,4,2) (4,1,2) (5,2,3)

猪脚本会产生 {(1,2),(2,0)} {(3,4),(4,1)} {(5,2)}

问题是:我该如何产生这个结果?我习惯于看到聚合操作遵循一组操作的示例。我不太清楚如何过滤元组并将它们放回袋中。谢谢你的帮助!

1 个答案:

答案 0 :(得分:8)

原来我要找的是Pig中嵌套投影的语法。

如果一个元组具有形式(t,a,b)的元组,并希望在分组后删除b,则以这种方式完成。

grouped = GROUP tups BY b;
result = FOREACH grouped GENERATE tup.(t,a);

请参阅PigLatin页面上的“嵌套投影”部分。 http://wiki.apache.org/pig/PigLatin