apache pig,按id分组的值的排列

monwx1rj  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(457)

使用apachepig,我需要一个字段的所有排列,按id字段分组(在本例中为title)。输入数据如下所示:
架构是{chararray,chararray}

(title1, name1)
(title1, name2)
(title1, name3)
(title2, name4)
(title2, name5)
(title2, name6)

我需要在一个列表中的标题1名称关系和标题2名称关系的所有排列。期望输出为:

(name1, name2)
(name1, name3)
(name2, name3)
(name4, name5)
(name4, name6)
(name5, name6)

我在apache pig下找到了如何从包中查找所有可能的排列的相关答案,但是我在扩展解决方案以限制每个标题字段的排列方面遇到了困难。

fbcarpbf

fbcarpbf1#

在做了更多的搜索之后,使用以下两篇文章:如何从apache pig下的包中找到所有可能的排列,pig:从分组包中取出所有元组,这让我找到了这个解决方案:
输入架构是{chararray,chararray}

inpt = foreach input generate $0 as (id:chararray), $1 as (val);
grp = group inpt by (id);
id_grp = foreach grp generate group as id, inpt.val as value_bag;
result = foreach id_grp generate FLATTEN(value_bag) as v1,FLATTEN(value_bag) as v2; 
result = filter result by v1 <= v2;
result = filter result by v1 != v2;

相关问题