基本PIG问题 - 从另一个组中减去一个组

时间:2014-01-30 15:25:30

标签: apache-pig comm

我想在PIG上从另一组中减去一组。 我想做什么与“comm -23”命令在bash上做的完全相同,但我在互联网上找不到任何关于它的文档。

所以例如: A组是: 1 2 3 4 五 6

B组是: 3 4 五 6 7

我需要的输出是:GROUP A - GROUP B: 1 2

2 个答案:

答案 0 :(得分:0)

查看datafu包。它包含许多有用的UDF,包括set操作。

答案 1 :(得分:0)

正如WinnieNicklaus所说,DataFu是一个很好的资源。我为这个用例编写了SetDifference UDF。假设您正在使用行李,这将适用于您的用例。

文档中的示例:

define SetDifference datafu.pig.sets.SetDifference();

-- input:
-- ({(1),(2),(3),(4),(5),(6)},{(3),(4)})
input = LOAD 'input' AS (B1:bag{T:tuple(val:int)},B2:bag{T:tuple(val:int)});

input = FOREACH input {
  B1 = ORDER B1 BY val ASC;
  B2 = ORDER B2 BY val ASC;

  -- output:
  -- ({(1),(2),(5),(6)})
  GENERATE SetDifference(B1,B2);
}