我正在使用 0 reduce 方法来解决我的问题。我希望预处理来自一个文件的数据,然后将其写为另一个文件,但没有新行和制表符分隔符?我如何输出已处理过我的数据的地图作业,其文件格式与它在减去预处理后的文件格式相同。也就是说,我有这样的事情:
预处理:
<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 和 map reduce 的新手。
我在下面包含了我的地图功能。我不想使用 reduce,因为它会在 map 和 reducer 之间进行排序。
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);
}
}
另外,我也用谷歌搜索了这个并阅读了 apache hadoop api,看看我是否能找到答案。