2017-08-08 114 views
0

我試圖比較豬中的兩個數據集。比較Pig中的兩個數據集

A = Load 'file' using pigstorage('|') (id : chararray, id1: charray, id2 : charray, name: charray, name1 : chararray, adr : chararray); 

B = Load 'file1' using pigstorage('|') (id : chararray, id1: charray, id2 : charray); 

假設我有以上模式,其中來自文件1(ID,ID1,ID2)的組合應該是從文件2.

和之後的等於(ID,ID1,ID2)的組合comparision is.I要存儲的輸出組合匹配爲 (id:chararray,id1:charray,id2:charray,name:charray,name1:chararray,adr:chararray)

另外我想知道如何輸出不匹配到單獨文件的組合的結果。

任何人都可以幫助我。先謝謝您的幫助!

回答

0

您可以簡單地使用JOIN查找匹配組合。 (我使用LEFT OUTER JOIN兩全匹配,NON_MATCHED)

A = Load 'file1' using PigStorage('|') as (id : chararray, id1: chararray, id2 : chararray, name: chararray, name1 : chararray, adr : chararray); 

B = Load 'file2' using PigStorage('|') as (id : chararray, id1: chararray, id2 : chararray); 

C = JOIN A BY (id, id1, id2) LEFT OUTER, B BY (id, id1, id2); 

,然後用SPLIT來匹配,NOT_MATCHED分開。

SPLIT C INTO MATCHED IF B::id is not null, NOT_MATCHED IF B::id is null; 
+0

是否需要變量?我們可以直接存儲Split嗎? – dk3094

+0

@dk3094分割的語法是 SPLIT別名INTO別名IF表達式,別名IF表達式[,別名IF表達式...];您可以分別存儲MATCHED和NOT_MATCHED。 – Wonjin