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

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

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

  1. (title1, name1)
  2. (title1, name2)
  3. (title1, name3)
  4. (title2, name4)
  5. (title2, name5)
  6. (title2, name6)

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

  1. (name1, name2)
  2. (name1, name3)
  3. (name2, name3)
  4. (name4, name5)
  5. (name4, name6)
  6. (name5, name6)

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

fbcarpbf

fbcarpbf1#

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

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

相关问题