public static class MapClass extends MapReduceBase implements
Mapper<LongWritable, Text, Text, Text> {
private Text word = new Text();
public void map(LongWritable key, Text value,
OutputCollector<Text, Text> output, Reporter reporter)
throws IOException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line, "//////",
false);
word.set("key:"+tokenizer.nextToken());
output.collect(word, new Text("value="+tokenizer.nextToken()));
}
}
2条答案
按热度按时间eqoofvh91#
如果需要,可以将键从Map器之前的值中分离出来,我认为这是一种更简单的方法。它可以通过使用keyvaluetextinputformat作为输入类来完成。这正是你所需要的;它允许您选择分隔符/分隔符,将键与传递给Map器的值分开。您可以通过执行以下操作进行设置:
job.setInputFormatClass(KeyValueTextInputFormat.class);
然后您可以通过键入以下内容来选择分隔符:Configuration conf = new Configuration(); conf.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator","//////");
当它到达你的Map器,它已经分裂。watbbzwu2#
我不知道“不想从文件中读取”是什么意思。我认为您需要做的是读取文件中的每一行,并将每一行按“/////”拆分。