我正在使用0減少方法來解決我的問題。我希望從一個文件中預處理數據,然後將其作爲另一個文件寫出,但沒有新行和製表符分隔符?我如何輸出已經處理過我的數據的地圖作業,使用相同的文件格式減去預處理。 也就是說,我有這樣的事情:MapReduce:如何輸出不帶換行符的鍵/值對?
預處理:
<TITLE> Herp derp </Title> I am a major general
後期處理:
Herp
Derp
I
am
a
major
general
我希望它做的是這樣的:
Herp Derp I am a major general
我相信問題出在這行代碼上:
job.setOutputFormatClass(TextOutputFormat.class);
然而,當我試過了,很天真地做一些事情,如:
job.setOutputFormatClass(null);
這顯然是行不通的。是否有格式類提供,我可以用它來做到這一點?如果沒有,我怎麼能寫我自己的課程,只是想輸出所有內容?我是新來的hadoop和地圖減少。
我已經在下面包含了我的地圖功能。我不想使用reduce,因爲它會在地圖和縮減器之間進行排序。
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
//Did preprocessing here, irrelevant to my problem
context.write(word, null);
}
}
此外,我也google了這一點,並閱讀apache hadoop api,看看我是否能夠回答一個答案。
這工作。我將每個單詞輸出爲一個鍵/值對。但是這個文件中的每個「文檔」都是一行。所以一旦我這樣做了,一切都清理了。謝謝。 – GeekyOmega
@GeekyOmega:你想要根據輸入排序輸出嗎? –