【已解决】关于IDEA中 Driver 出现Exception in thread quot;mainquot; java.lang.NullPointerException问题
生活随笔
收集整理的這篇文章主要介紹了
【已解决】关于IDEA中 Driver 出现Exception in thread quot;mainquot; java.lang.NullPointerException问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在學習hive過程中,按照mapreduce編程規(guī)范,分別編寫Mapper,Reducer,Driver,在編寫Driver后運行報錯了,花了兩天,找到了解決方案(裂開.JPG)。
代碼:
package com.miao;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class WCDriver {public static void main(String[] args) throws Exception {// 1 創(chuàng)建一個配置對象Configuration conf = new Configuration();// 2 通過配置對象獲取一個job對象Job job = Job.getInstance(conf);// 3 設置job的jar包job.setJarByClass(WCDriver.class);// 4 設置job的mapper類,reduce類job.setMapperClass(WCMapper.class);job.setReducerClass(WCReducer.class);// 5 設置mapper的keyout和valueoutjob.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// 6 設置最終輸出數(shù)據(jù)的keyout和valueoutjob.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// 7 設置輸入數(shù)據(jù)的路徑和輸出數(shù)據(jù)的路徑---FileInputFormat.setInputPaths(job,new Path(args[0])); // 也可以寫死路徑//注意輸出目錄不能事先存在,必須設置一個不存在的目錄,框架會自行創(chuàng)建,否則就會報錯FileOutputFormat.setOutputPath(job,new Path(args[1])); // 也可以寫死路徑// 8 向yarn或者本地yarn模擬器提交任務boolean res = job.waitForCompletion(true);System.out.println("是否成功:"+res);}}
報錯:
Exception in thread "main" java.lang.NullPointerException
原因:
在設置路徑時那兒沒有指定路徑,或者指定了已經(jīng)存在的路徑。
解決:
?1.點擊此處去設置傳輸文件的保存路徑
?
2.編輯路徑(前一個為原本文本文檔的路徑,第二個為IDEA上要傳的文件所要傳到電腦本機的路徑,我這里選擇同樣傳到E盤的將會被IDEA自動新建的名為abc的文件夾里)
?3.然后運行你的Driver.java,就會成功了。(如果上傳的文件夾路徑是電腦存在的,依舊會報錯,所以設置路徑時一定需要取一個電腦里沒有的文件夾名字!)
orz 報錯時搜遍全網(wǎng),找了兩天都沒看到解決這個的帖子,記錄一下。
當然我是學這個的菜逼,還是很多不懂。。
總結
以上是生活随笔為你收集整理的【已解决】关于IDEA中 Driver 出现Exception in thread quot;mainquot; java.lang.NullPointerException问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。