Hadoop学习问题10:MapReduce程序报错java.lang.NullPointerException

Hadoop学习问题10:MapReduce程序报错java.lang.NullPointerException,第1张

Hadoop学习问题10:MapReduce程序报错java.lang.NullPointerException 问题描述

在运行MapReduce程序中把报错如下:

java.lang.Exception: java.lang.NullPointerException
	at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:492)
	at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:559)
Caused by: java.lang.NullPointerException
	at org.apache.hadoop.io.WritableComparator.compare(WritableComparator.java:157)
	at org.apache.hadoop.mapreduce.task.ReduceContextImpl.nextKeyValue(ReduceContextImpl.java:158)
	at org.apache.hadoop.mapreduce.task.ReduceContextImpl.nextKey(ReduceContextImpl.java:121)
	at org.apache.hadoop.mapreduce.lib.reduce.WrappedReducer$Context.nextKey(WrappedReducer.java:302)
	at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:170)
	at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:628)
	at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:390)
	at org.apache.hadoop.mapred.LocalJobRunner$Job$ReduceTaskRunnable.run(LocalJobRunner.java:347)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
原因分析

显示空指针异常,一般而言就是某个对象你没有创建实例,然后就是使用,例如获取某个对象的属性a,但是没有创建对象实例就调用了,那么就相当于null.a,就会报空指针错误

我这里明显没有指向某个文件错误,但是第一行报错:org.apache.hadoop.io.WritableComparator.compare(WritableComparator.java:157)
说明有可能在我比较器相关的文件内有对象没有定义

问题解决


我这里是因为没有设置输出key类型以及开启自定义比较,通过父类构造器,第一个参数传入reduce输入的key的类型,第二个参数传true表示开启自定义的比较。如果没有设置,那么第二个参数就是一个null的值,那么就不会创建两个第一个参数传入的类的对象进行比较,也就是不能从compare中的两个参数获得两个比较的对象,那么我还是调用了compare方法并使用了他的参数,就产生空指针异常

关于上述提到的该构造器配置两个比较对象可以参考:MapReduce学习4-1:排序

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5693040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存