我有如下形式的2個文件減去兩個數字與Hadoop中相同的密鑰
文件1:
key1的值1
鍵2值2
...
文件2:
個KEY1 VALUE3
KEY2 VALUE4
...
我想以產生減少的形式
KEY1(值1-VALUE3)/ VALUE1
KEY2的輸出( value2-value4)/ value2
我有地圖編寫密鑰,值前面加了一個字符te灌裝它 從文件1或文件2,但不知道未來該怎麼寫減少階段
我的地圖的方法是
public void map(LongWritable key,Text val,Context context) throws IOException, InterruptedException
{
Text outputKey = new Text();
Text outputValue = new Text();
outputKey.set(key.toString());
if ("A")
{
outputValue.set("A,"+val);
}
else
{
outputValue.set("B," + val);
}
context.write(outputKey, outputValue);
}
}
謝謝。這是我第一次嘗試,似乎不起作用。每次調用reduce時,值都是單個對象,而不是我期望的兩個對象(每個文件中的一個用於同一個鍵)。我添加了我的地圖方法,可能它是不正確的。案例key1 = key2在這個特定的例子中不會發生。 – user2175783 2014-11-04 01:35:02
它甚至不會編譯,標記在冥王星上;-)。我會更新問題本身,不想編輯答案。您稍後可能會將密鑰類型更改爲'InWritable',但請添加'keyVal'.length檢查以消除AOBException。現在看看。 – blackSmith 2014-11-04 05:29:09
他們拒絕了我對這個問題的編輯。所以我把它張貼在這裏。我假定文件名是FileA和FileB。 – blackSmith 2014-11-04 10:03:52