假设我有一个装有许多对(A,B)的袋子NEW:

Pair 1: { "A" : { "long" : someInteger1 }, "B" : { "int" : someInteger2 } }

Pair 2: { "A" : { "long" : someInteger3 }, "B" : { "int" : someInteger4 } }

......

我有另一个旧袋,与第一个袋几乎相同(它可能有一些丢失,不同或多余的对),我想通过计算两个袋中有多少对相同来比较旧和新。 袋子中可能有多对(A,B),它们具有相同的A或相同的B。

我已经尝试过使用Pig的事情:
  • 在由A和B以及
    计算有A和B都匹配的人数。计数只是关于
    我所期望的一半。
  • 在(A,B)上加入OLD和NEW并计算那里有多少结果
    是。该数量仅是我预期的一半(与上面的1相同)。
  • 在A上加入OLD和NEW并计算B的匹配程度。对于一些
    原因是,合并结果似乎有奇怪的重复项:

    结果1:{“A_new”:{“long”:someInteger1},“B_new”:{“int”:someInteger2},“A_old”:{“long”:someInteger1},“B_old”:{“int”:someInteger2 }}

    结果2:{“A_new”:{“long”:someInteger1},“B_new”:{“int”:someInteger2},“A_old”:{“long”:someInteger1},“B_old”:{“int”:someInteger3 }}

    结果3:{“A_new”:{“long”:someInteger1},“B_new”:{“int”:someInteger2},“A_old”:{“long”:someInteger1},“B_old”:{“int”:someInteger4 }}

    结果4:{“A_new”:{“long”:someInteger1},“B_new”:{“int”:someInteger2},“A_old”:{“long”:someInteger1},“B_old”:{“int”:someInteger5
  • 最佳答案

    DataFu有一个很棒的Pig UDF库可供您使用。我认为SetDifference()是您想要的。

    关于hadoop - 我如何找到两个袋对(A,B)之间的差异,其中A和B都不都是唯一的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32541574/

    10-11 06:22