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

3htmauhk  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(323)

我想从另一只Pig身上减去一组。我想做完全相同的什么“comm-23”命令是在bash上做的,但我找不到任何有关的文件在互联网上。
例如:a组是:1 2 3 4 5 6
b组:3 4 5 6 7
我需要的输出是:a组-b组:12

flvtvl50

flvtvl501#

查看datafu包。它包括许多有用的自定义项,包括集合操作。

fiei3ece

fiei3ece2#

正如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);
}

相关问题