在a和b都不是唯一的情况下,如何找到两个包(a,b)之间的差异?

9jyewag0  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(285)

假设我有一个新袋子,里面有很多对(a,b):

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)上加入新的和旧的,并计算有多少个结果。计数只有我预期的一半左右(与上面的1相同)。
在a上加入新老,并计算b如何匹配。出于某种原因,联接的结果似乎有奇怪的重复项:
结果1:{“a\u new”:{“long”:someinteger1},“b\u new”:{“int”:someinteger2},“a\u old”:{“long”:someinteger1},“b\u old”:{“int”:someinteger2}
结果2:{“a\u new”:{“long”:someinteger1},“b\u new”:{“int”:someinteger2},“a\u old”:{“long”:someinteger1},“b\u old”:{“int”:someinteger3}
结果3:{“a\u new”:{“long”:someinteger1},“b\u new”:{“int”:someinteger2},“a\u old”:{“long”:someinteger1},“b\u old”:{“int”:someinteger4}
结果4:{“a\u new”:{“long”:someinteger1},“b\u new”:{“int”:someinteger2},“a\u old”:{“long”:someinteger1},“b\u old”:{“int”:someinteger5}

yi0zb3m4

yi0zb3m41#

datafu有一个很棒的 Pig 可以使用的自定义项。我想 SetDifference() 就是你要找的。

相关问题