我在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条答案
按热度按时间new9mtju1#
最简单的解释是输入路径(
"/home/pera/WORK/DECOMPRESSION_RESULT.csv"
)不包含hdfs上的任何内容。您可以通过map\u input\u records计数器的值来验证。您还可以使用hadoop dfs -ls /home/pera/WORK
,或者您甚至可以通过hadoop dfs -cat /home/pera/WORK/DECOMPRESSION_RESULT.csv | head
. (或者-text
而不是-cat
如果是压缩的)。另一个问题可能是reducer有一个特殊的(if)条件,对于每个mapper的输出都失败,但是在identity mapper和reducer的情况下,这个条件不应该成立,所以我相信是前者。