[英]Join Two Equal Datasets Without A Key
使用Hadoop,我想聯接兩個具有相同記錄數但不攜帶行號的文件。 例如A.txt
a xx
b y
c z
和B.txt
1 r
2 s
3 d
加入后我需要
a xx 1 r
b y 2 s
3 d c z
這是IOW完美的並排連接。 我不知道如何在Hadoop中執行此操作,我相信我需要兩個文件都進行初始傳遞以附加行號嗎?
利用Pig的答案和/或map / reduce技巧的各種組合都很好。
這篇文章給你一個提示: 關於特殊輸入格式的SO POST
輸入格式可以產生行號作為鍵,而不是提供字節偏移量。 這樣,您可以簡單地使用單位映射器(僅發出鍵值)並在化簡器中進行串聯。 看起來似乎很難,但是它只是覆蓋了輸入格式中的幾個函數,您已經完成了。
這應該在Pig中起作用:
A = load 'A.txt';
B = load 'B.txt';
rankedA = RANK A;
joined = JOIN rankedA BY $0, B BY $0;
然后,您可以根據需要使用FOREACH
語句進一步對列進行重新排序。
我認為由於這兩個文件的記錄數相等,因此您可以僅使用一次通過(一張地圖歸約工作)來進行以下聯接:
希望這可以幫助您的事業。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.