org.apache.hadoop.mapreduce.lib.input.SequenceFileRecordReader.close上的java.lang.NullPointerException
我正在运行两个map-reduce对。第一个map reduce的输出被用作下一个map reduce的输入。为了做到这一点,我给出了job.setOutputFormatClass(SequenceFileOutputFormat.class)。运行以下驱动程序类时:org.apache.hadoop.mapreduce.lib.input.SequenceFileRecordReader.close上的java.lang.NullPointerException,hadoop,mapreduce,hadoop-streaming,Hadoop,Mapreduce,Hadoop Streaming,我正在运行两个map-reduce对。第一个map reduce的输出被用作下一个map reduce的输入。为了做到这一点,我给出了job.setOutputFormatClass(SequenceFileOutputFormat.class)。运行以下驱动程序类时: package组织; 导入org.apache.commons.configuration.ConfigurationFactory; 导入org.apache.hadoop.conf.Configured; 导入org.ap
package组织;
导入org.apache.commons.configuration.ConfigurationFactory;
导入org.apache.hadoop.conf.Configured;
导入org.apache.hadoop.fs.Path;
导入org.apache.hadoop.io.Text;
导入org.apache.hadoop.mapreduce.Job;
导入org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
导入org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat;
导入org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
导入org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
导入org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;
导入org.apache.hadoop.util.Tool;
导入org.apache.hadoop.util.ToolRunner;
导入org.apache.mahout.math.VarLongWritable;
导入org.apache.mahout.math.VectorWritable;
公共类Driver1扩展配置的实现工具
{
公共int运行(字符串[]args)引发异常
{
如果(参数长度!=3){
System.err.println(“用法:MaxTemperatureDriver”);
系统退出(-1);
}
//ConfFactory工作流=新建ConfFactory(新路径(“/input.txt”)、新路径(“/output.txt”)、TextInputFormat.class、VarLongWritable.class、Text.class、VarLongWritable.class、VectorWritable.class、SequenceFileOutputFormat.class);
作业=新作业();
Job job1=新作业();
job.setJarByClass(Driver1.class);
job.setJobName(“最高温度”);
addInputPath(作业,新路径(args[0]);
setOutputPath(作业,新路径(args[1]);
setMapperClass(UserVectorMapper.class);
setReducerClass(uservectoreducer.class);
setOutputKeyClass(VarLongWritable.class);
job.setOutputValueClass(VectorWritable.class);
setOutputFormatClass(SequenceFileOutputFormat.class);
job1.setJarByClass(Driver1.class);
//job.setJobName(“最高温度”);
job1.setInputFormatClass(SequenceFileInputFormat.class);
addInputPath(job1,新路径(“output/part-r-00000”);
setOutputPath(作业1,新路径(args[2]);
job1.setMapperClass(ItemToItemPrefMapper.class);
//job1.setReducerClass(uservectoreducer.class);
job1.setOutputKeyClass(VectorWritable.class);
job1.setOutputValueClass(VectorWritable.class);
job1.setOutputFormatClass(SequenceFileOutputFormat.class);
系统退出(job.waitForCompletion(true)和job1.waitForCompletion(true)-0:1);
布尔值success=job.waitForCompletion(true);
返回成功?0:1;
}
公共静态void main(字符串[]args)引发异常{
Driver1 driver=新的Driver1();
int exitCode=ToolRunner.run(驱动程序,参数);
系统退出(退出代码);
}
}
这主要是因为Hadoop在序列化数据时感到困惑
确保
这可能是您的输入文件有问题。您是否尝试仅使用输入文件的前几行运行?是否解决了此问题?我也有同样的问题。在您的例子中,我看到另一个MR输出作为输入路径。您的代码是否包含成功文件?