2011-10-17 36 views
0

我有兩個文件,一個叫A記錄如何在Apache PIG中正確執行內部連接?

123^record1 
222^record2 
333^record3 

和其他文件,稱爲B-記錄

123^jim 
123^jim 
222^mike 
333^joe 

你可以在我的令牌123一次文件中的看到。在文件B中有兩次。有沒有辦法使用Apache PIG我可以加入數據,這樣我只能從A文件中獲得一個連接記錄?

這裏是我當前的腳本輸出如下

arecords = LOAD '$a' USING PigStorage('^') as (token:chararray, type:chararray); 

brecords = LOAD '$b' USING PigStorage('^') as (token:chararray, name:chararray); 


x = JOIN arecords BY token, brecords BY token; 

dump x; 

這將產生如下:

(123,record1,123,jim) 
(123,record1,123,jim) 
(222,record2,222,mike) 
(333,record3,333,joe) 

當我真正想要的是(通知令牌123只在有一次後加入)

(123,record1,123,jim) 
(222,record2,222,mike) 
(333,record3,333,joe) 

有什麼想法嗎?非常感謝

回答

4

我會做這樣的事情:

arecords = LOAD '$a' USING PigStorage('^') as (token:chararray, type:chararray); 

brecords = LOAD '$b' USING PigStorage('^') as (token:chararray, name:chararray); 

bdistinct = DISTINCT brecords; 

x = JOIN arecords BY token, bdistinct BY token; 

dump x; 
+0

完全正確,我應該做我的右手邊鮮明。現在,這一切都很好,謝謝! – James

+0

不客氣 – frail