分享

mapreduce往hbase表写数据,报错如下,报空指针异常,求帮忙看看

jackielee 发表于 2017-6-25 18:11:45 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 8954
Driver代码如下
[mw_shl_code=java,true]public int run(String[] args) throws Exception {
                //1)get conf
                Configuration conf = super.getConf();
               
                //2)create job
                Job job = Job.getInstance(conf,this.getClass().getSimpleName());
                job.setJarByClass(WriteJson2Hbase.class);
               
                //3)set job
                //mapper
                job.setMapperClass(Json2StringMapper.class);
                job.setMapOutputKeyClass(IntWritable.class);
                job.setMapOutputValueClass(Text.class);
               
                //input
                Path inPath = new Path(args[0]);
                FileInputFormat.addInputPath(job, inPath);
               
                //reducer and output
                TableMapReduceUtil.initTableReducerJob(
                                "finance:users",    //output table
                                Write2HbaseReducer.class,  //reducer class
                                job);
               
                job.setNumReduceTasks(1);
               
                //4)submit job
                boolean isSuccess = job.waitForCompletion(true);
                return isSuccess ? 0 : 1;
               
        }
[/mw_shl_code]


执行程序报错如下:
17/04/27 23:59:54 INFO mapreduce.Job: Running job: job_1493287270090_0006
17/04/28 00:00:03 INFO mapreduce.Job: Job job_1493287270090_0006 running in uber mode : false
17/04/28 00:00:03 INFO mapreduce.Job:  map 0% reduce 0%
17/04/28 00:00:08 INFO mapreduce.Job:  map 100% reduce 0%
17/04/28 00:00:08 INFO mapreduce.Job: Task Id : attempt_1493287270090_0006_m_000000_0, Status : FAILED
Error: java.lang.NullPointerException
        at org.hadoop.apache.hadoop.WriteJson2Hbase$Json2StringMapper.map(WriteJson2Hbase.java:51)
        at org.hadoop.apache.hadoop.WriteJson2Hbase$Json2StringMapper.map(WriteJson2Hbase.java:1)
        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)

17/04/28 00:00:09 INFO mapreduce.Job:  map 0% reduce 0%
17/04/28 00:00:12 INFO mapreduce.Job: Task Id : attempt_1493287270090_0006_m_000000_1, Status : FAILED
Error: java.lang.NullPointerException
        at org.hadoop.apache.hadoop.WriteJson2Hbase$Json2StringMapper.map(WriteJson2Hbase.java:51)
        at org.hadoop.apache.hadoop.WriteJson2Hbase$Json2StringMapper.map(WriteJson2Hbase.java:1)
        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)




已有(2)人评论

跳转到指定楼层
nextuser 发表于 2017-6-25 18:50:56
有的值可能取不到。驱动里,看不出什么问题。可能在map或则reduce里
回复

使用道具 举报

jackielee 发表于 2017-6-26 18:35:05
nextuser 发表于 2017-6-25 18:50
有的值可能取不到。驱动里,看不出什么问题。可能在map或则reduce里

mapper代码如下,需求是将json格式的文件传入hbase,mapper将json转化为key+line的形式,目前定位问题就是在mapper上报以上错误。麻烦帮忙看看


public static class Json2StringMapper extends Mapper<LongWritable, Text, IntWritable, Text>{
               
                private IntWritable mapOutKey;
                private Text mapOutValue;
               
                @Override
                public void map(LongWritable key, Text value, Context context)
                                throws IOException, InterruptedException {
                       
                        String line = value.toString();
                       
                        //resolve json
                        String regEx = "[\\{\"\\}]";
                        Pattern p = Pattern.compile(regEx);
                        Matcher m = p.matcher(line);
                        String resovedLine = m.replaceAll("").trim();  //replace {,",}
                       
                        mapOutValue.set(resovedLine);
                       
                        //split into array[]
                        String[] tuples = resovedLine.split(",");
                       
                        //set rowkey
                        int id  =Integer.valueOf(tuples[0].split(":")[1]);
                        mapOutKey.set(id);
                                       
                        //mapOutput (key,String[colume:value])
                        context.write(mapOutKey, mapOutValue);
                               
                }
                               
        }

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条