Hadoop 使用NullWritable作为OutputKeyClass,但我没有得到预期的结果

Hadoop 使用NullWritable作为OutputKeyClass,但我没有得到预期的结果,hadoop,mapreduce,Hadoop,Mapreduce,我只想输出值,所以我使用NullWritable作为OutputKeyClass,如下所示: protected void reduce(Text key, Iterable<Text> values, Reducer<Text, Text, NullWritable, Text>.Context context) throws IOException, InterruptedException {

我只想输出值,所以我使用NullWritable作为OutputKeyClass,如下所示:

protected void reduce(Text key, Iterable<Text> values,
            Reducer<Text, Text, NullWritable, Text>.Context context)
                    throws IOException, InterruptedException {
        for(Text value : values){
            context.write(NullWritable.get(), value);
        }
    }
job.setNumReduceTasks(1);
    job.setOutputKeyClass(NullWritable.class);
    job.setOutputValueClass(Text.class);
    job.setMapOutputKeyClass(Text.class);
    job.setMapOutputValueClass(Text.class);
    FileInputFormat.addInputPath(job, new Path(baseInPath));
    FileSystem.get(conf).delete(new Path(baseOutPath), true);
    FileOutputFormat.setOutputPath(job, new Path(baseOutPath));

    System.exit(job.waitForCompletion(true) ? 0 : 1);
但是当我检查结果路径时,我得到了这个。 �LZO

 `@��v��/�!�Z0 | res | 1*“| 33260580217607 | 2 | 1 | 0.2 | 23 | 2016-03-28 13:57:42 支付6-03-28 13:57:42

以0 | res | 1……开头的字符串是value,但前面有一些乱码。 我认为它们是nullwriteable的指针。
如何删除这些乱码?我的代码正确吗?

查看输出,似乎设置了LZO压缩。您可以尝试查看mapred-site.xml,看看是否设置了此属性


mapred.map.output.compression.codec
com.hadoop.compression.lzo.LzoCodec

有关更多详细信息:

是否启用了任何地图输出压缩编解码器?Job Job=new Job(conf,“shop_re_pay”);Job.setInputFormatClass(TextInputFormat.class);Job.setJarByClass(shopReturnJob.class);Job.setMapperClass(FailPayMap.class);Job.SetReduceClass(FailPayReduce.class);Job.setNumReduceTasks(1);Job.setOutputKeyClass(NullWritable.class);job.setOutputValueClass(Text.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(Text.class);FileInputFormat.addInputPath(作业,新路径(BaseInputPath));FileSystem.get(conf).delete(新路径(baseOutPath),true);FileOutputFormat.setOutputPath(作业,新路径(baseOutPath));这是完整的作业配置。我没有配置压缩编解码器。代码中没有任何错误。可能您可以发布完整的代码,其中包含一些示例输入和预期输出。哦,是的。我询问了我们的hadoop经理,他们给了我一个方法来提取数据。谢谢