Mapreduce-过滤不同值时的空白输出

时间:2018-12-05 14:24:32

标签: java mapreduce

我正在寻找有关Java应用程序的帮助,该应用程序应该为输入文件的特定选择列输出不同的值。 在我的情况下,我选择了与年份相对应的第一列,这是一个琐碎的练习,但是只是为了熟悉Java中的MapReduce。

映射器类:

公共类Map扩展了Mapper {

@Override
public void map(LongWritable key, Text value, Context context)
    throws IOException, InterruptedException{
    String line = value.toString();
    String[] data = line.split(",");

    context.write(new Text(data[1]), NullWritable.get());
}

}

减少班级

公共类Reduce扩展Reducer {

@Override
public void reduce(final Text key,
                   final Iterable<NullWritable> values,
                   final Context context)
        throws IOException, InterruptedException{
    context.write(key, NullWritable.get());
}

}

主班

公共类主要扩展配置的工具{

@Override
public int run(String[] args) throws Exception {

    Job job = Job.getInstance(getConf());
    job.setJobName("filterdistinctvalues");
    job.setJarByClass(Main.class);

    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(NullWritable.class);

    job.setMapperClass(Map.class);
    job.setReducerClass(Reduce.class);

    Path inputFilePath = new Path("/Users/francesco/Downloads/MapReduceSaturday1st/data/input/input.txt");
    Path outputFilePath = new Path("/Users/francesco/Downloads/MapReduceSaturday1st/data/output/filterdistinctvalues3");

    FileInputFormat.addInputPath(job, inputFilePath);
    FileOutputFormat.setOutputPath(job, outputFilePath);

    return job.waitForCompletion(true) ? 0 : 1;
}

public static void main(String[] args) throws Exception{
    int exitCode = ToolRunner.run(new Main(), args);
    System.exit(exitCode);
}

}

为帮助您进行分析,我复制了输入文件的前十行,即一个简单的txt文件。

1,2010,1,1,0,NA,-21,-11,1021,NW,1.79,0,0 2,2010,1,1,1,NA,-21,-12,1020,NW,4.92,0,0 3,2010,1,1,2,NA,-21,-11,1019,NW,6.71,0,0 4,2010,1,1,3,NA,-21,-14,1019,NW,9.84,0,0 5,2010,1,1,4,NA,-20,-12,1018,NW,12.97,0,0 6,2010,1,1,5,NA,-19,-10,1017,NW,16.1,0,0 7,2010,1,1,6,NA,-19,-9,1017,NW,19.23,0,0 8,2010,1,1,7,NA,-19,-9,1017,NW,21.02,0,0 9,2010,1,1,8,NA,-19,-9,1017,NW,24.15,0,0 10,2010,1,1,9,NA,-20,-8,1017,NW,27.28,0,0

文本文件中没有标题。

我可以很好地构建解决方案,并且一切都可以很好地编译(我在这里省略了import语句,但是它们完全可以),但是输出文件是完全空白的。运行该应用程序时,Main Java类中的输出文件夹“ filterdistinctvalues3”不存在。

可能您需要进一步的信息,但是对于如何深入了解问题的任何建议,我将不胜感激。

预先感谢

0 个答案:

没有答案