今天遇到了如下错误:
2017-12-14 02:42:56,217 INFO [org.apache.hadoop.mapred.MapTask] - Ignoring exception during close for org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader@7a74db2c
java.lang.NullPointerException
at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.close(MapTask.java:499)
at org.apache.hadoop.mapred.MapTask.closeQuietly(MapTask.java:1982)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:772)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:235)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
2017-12-14 02:42:56,219 INFO [org.apache.hadoop.mapred.MapTask] - Starting flush of map output
2017-12-14 02:42:56,276 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Map task executor complete.
2017-12-14 02:42:56,340 WARN [org.apache.hadoop.mapred.LocalJobRunner] - job_local161727417_0001
java.lang.Exception: java.lang.NullPointerException
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:403)
Caused by: java.lang.NullPointerException
at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:524)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:762)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:339)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:235)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
2017-12-14 02:42:57,074 INFO [org.apache.hadoop.mapreduce.Job] - Job job_local161727417_0001 failed with state FAILED due to: NA
2017-12-14 02:42:57,103 INFO [org.apache.hadoop.mapreduce.Job] - Counters: 0
原因是因为createRecordReader方法返回了null
改正如下