2015-09-12 17 views
1

假設我有一個袋子NEW包含許多對(A,B):如何找到A和B都不是唯一的兩個包(A,B)之間的差異?

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

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

...... 

我有另一個袋子OLD,這幾乎等同於第一袋(它可以具有幾個缺失,不同的,或額外的配對),我想通過計算兩個包中的相同數量來比較OLD和NEW。 可以有多個對(A,B),其具有相同的A或B.相同的袋子內

觀光使用豬我已經嘗試:

  1. 加入OLD和NEW上的散列從A和B生成的代碼和 計算有多少A和B都匹配。計數僅爲我所期望的一半的 。
  2. 在(A,B)上加入OLD和NEW並計算 有多少個結果。計數只有我預期的一半左右(與上面的1相同)。
  3. 在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}}

回答

1

DataFuPig的UDF,你可以使用一個真棒庫。我認爲SetDifference()是你正在尋找的。

相關問題