8

我有一组 (t,a,b) 形式的元组,我想在 Pig 中按 b 分组。分组后,我想从每组的元组中过滤掉 b 并为每组生成一袋过滤后的元组。

例如,假设我们有 (1,2,1) (2,0,1) (3,4,2) (4,1,2) (5,2,3)

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

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

4

1 回答 1

8

原来我正在寻找的是 Pig 中嵌套投影的语法。

如果一个人有 (t,a,b) 形式的元组,并且想在 group by 之后删除 b,则以这种方式完成。

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

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

于 2012-05-30T01:42:14.040 回答