我想在 PIG 上从另一个组中减去一个组。我想做与“comm -23”命令在 bash 上所做的完全相同的操作,但我在互联网上找不到任何关于此的文档。
例如:A组是:1 2 3 4 5 6
B组是:3 4 5 6 7
我需要的输出是:A组-B组:1 2
我想在 PIG 上从另一个组中减去一个组。我想做与“comm -23”命令在 bash 上所做的完全相同的操作,但我在互联网上找不到任何关于此的文档。
例如:A组是:1 2 3 4 5 6
B组是:3 4 5 6 7
我需要的输出是:A组-B组:1 2
查看datafu包。它包括很多有用的 UDF,包括集合操作。
正如 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);
}