Hadoop工作刚刚结束

时间:2015-07-20 11:47:10

标签: hadoop mapreduce

我对Hadoop有一个相当奇怪的问题。

我写了一个MR作业,就像这样结束,不执行map或reduce代码。它生成输出文件夹,但该文件夹为空。我认为没有理由这样做。

我甚至尝试使用默认的Mapper和Reducer,只是为了找到问题,但我没有异常,没有错误,作业刚刚完成并产生一个空文件夹。这是最简单的驱动程序:

    Configuration conf = new Configuration();

    //DistributedCache.addCacheFile(new URI(firstPivotsInput), conf);

    Job pivotSelection = new Job(conf);
    pivotSelection.setJarByClass(Driver.class);
    pivotSelection.setJobName("Silhoutte");

    pivotSelection.setMapperClass(Mapper.class);
    pivotSelection.setReducerClass(Reducer.class);

    pivotSelection.setMapOutputKeyClass(IntWritable.class);
    pivotSelection.setMapOutputValueClass(Text.class);

    pivotSelection.setOutputKeyClass(IntWritable.class);
    pivotSelection.setOutputValueClass(Text.class);

    FileInputFormat.addInputPath(pivotSelection, new Path("/home/pera/WORK/DECOMPRESSION_RESULT.csv"));
    FileOutputFormat.setOutputPath(pivotSelection, new Path("/home/pera/WORK/output"));

    pivotSelection.setNumReduceTasks(1);

    pivotSelection.waitForCompletion(true);

在这么简单的例子中可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

最简单的解释是输入路径("/home/pera/WORK/DECOMPRESSION_RESULT.csv")在HDFS上不包含任何 。您可以通过MAP_INPUT_RECORDS计数器的值来验证。您还可以使用hadoop dfs -ls /home/pera/WORK在HDFS上检查此文件的大小,或者您甚至可以通过hadoop dfs -cat /home/pera/WORK/DECOMPRESSION_RESULT.csv | head查看此文件的前几行。 (如果已压缩,则为-text而不是-cat

另一个问题可能是reducer有一个特殊的(if)条件,对于每个mapper的输出都失败了,但是在identity mapper和reducer的情况下不应该这样,所以我相信这个例子是前者一。