1

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

例如:A组是:1 2 3 4 5 6

B组是:3 4 5 6 7

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

4

2 回答 2

0

查看datafu包。它包括很多有用的 UDF,包括集合操作。

于 2014-01-30T15:41:05.330 回答
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);
}
于 2014-01-31T07:36:15.360 回答