2012-06-11 114 views
1

我是Hadoop/PIG初學者。加入在豬中使用'合併'

誰能告訴我

grunt> A = join A by $1, B by $1 using 'merge';  

而且
咕嚕之間的差異> A = $ 1連接A $ 1,B;

我有2個文件的1.txt和2.txt具有以下數據
的1.txt
A 1
乙3
的C 5
d 7

2.txt
AA 1
BB 2
CC 4
DD 6

我想要的輸出合併在一起,這樣
A 1節
AA 1
BB 2
乙3
CC 4
的C 5
DD 6
d 7

將「使用'合併'「給我所需的輸出?我試過了,不過不是。

你能讓我知道我在這裏錯過了什麼。

回答

3

聽起來像是你正在獲得一個內部連接(通過一個公共鍵連接的數據集)而不是外部連接(這就是你所期望的輸出之後的樣子)。

使用Word關鍵字FULL來表示你想要一個完全外部聯接:

grunt> A = join A by $1 FULL, B by $1 using 'merge'; 

然而,這可能產生意外的結果,如果你有在同一$ 0雙方數據集的紀錄(見例如用於內部連接)。您可能還需要修改輸出以刪除兩個數據集之間的缺失列。

或者,如果你只是想一個數據集追加到另一個,然後排序,使用UNION和ORDER BY運營商

grunt> U = UNION A, B; 
grunt> OrderedU = ORDER U BY $1 

有關每個的更多信息