更改mapreduce的默认分隔符

时间:2015-08-01 23:40:30

标签: java hadoop mapreduce outputformat

您好我是MapReduce的初学者,我想对WordCount进行编程,以便输出K / V对。但问题是我不想使用'tab'作为文件的键值对分隔符。我怎么能改变它?

我使用的代码与示例代码略有不同。这是驱动程序类。

public void reduce(IntWritable key,Iterable<Text> values, Context context) throws IOException, InterruptedException {
    String accu = "";
    for (Text val : values) {
        String[] entry=val.toString().split(",");
        String MBR = entry[1];
        //ASSUME MBR IS ENTRY 1. IT CAN BE REPLACED BY INVOKING FUNCTION TO CALCULATE MBR([COORDINATES])
        String mes_line = entry[0]+",MBR"+MBR+" ";
        result.set(mes_line);
        mos.write(key, result, generateFileName(key));
    }

由于我希望文件名与reducer的分区相对应,所以我在reduce函数中使用了multipleout.write(),因此代码略有不同。

{{1}}

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

由于您使用的是FileInputFormat,因此键是文件中的行偏移量,值是输入文件中的一行。映射器可以使用任何分隔符分割输入行。您可以使用它来拆分map方法中读取的记录。默认行为带有特定的输入格式,如TextInputFormat等。