2016-06-18 11 views
0

現在マップ内のセカンダリソートを減らそうとしていますが、マッパーを実行している間にヌルポインタ例外のエラーが発生しています。私はこれを使用していますlink しかし、コードを実行中にエラーが発生します。ここに私のcallStackがあります。nullPointer例外を取得する

16/06/18 13:34:53 INFO mapreduce.Job: Task Id : attempt_1466235357420_0007_m_000000_0, Status : FAILED Error: java.lang.NullPointerException at SecondartSort.SecondarySortSample1.SecondarySortMapper.map(SecondarySortMapper.java:22) at SecondartSort.SecondarySortSample1.SecondarySortMapper.map(SecondarySortMapper.java:1) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:784) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415)

と私のマッパーコードは次のとおりです。

public class SecondarySortMapper extends Mapper<LongWritable , Text, CustomTextInt, IntWritable> { 

    private CustomTextInt nameDepname; 
    private Text name; 
    private Text departmentName; 
    private IntWritable sal; 
    public void map (LongWritable key , Text value , Context context) throws IOException , InterruptedException{ 

     String[] line = value.toString().split(","); 

     //String depName = line[3]; 
     String Fullname =line[2]+line[1]; 
     name.set(Fullname); 
     departmentName.set(line[3]); 
     nameDepname.set(name,departmentName); 
     sal.set(Integer.parseInt(line[4])); 
     context.write(nameDepname, sal);  
    } 
} 

とデータファイルである:

1,kumar,sunil,enginering,2200 
2,mishra,sunil,enginering,1200 
3,arora,karan,mech,1200 
4,sharma,vivek,physics,2300 
5,koushik,vivek,physics,1350 
6,sindhu,armaan,math,2310 
7,arora,armaan,math,500 
8,yadav,pooja,mech,1800 
9,kuthi,pooja,math,1600 
10,arora,sunil,physics,1450 
11,mishra,karan,enginering,3400 
12,chandra,manish,physics,2300 

親切にアドバイス

おかげ sPradeep

+0

;' マップ関数はそれぞれの行を呼び出して値を –

答えて

2

あなたはACTUはありませんいずれかのクラス変数を作成します。これらは全て初期化されていないであろう。例えばnameについて

private CustomTextInt nameDepname; 
private Text name; 
private Text departmentName; 
private IntWritable sal; 

は、のようになります。 `文字列[]ライン= value.toString()スプリット( "")@Burrito

private Text name = new Text(); 
+0

Thanks @ Binary Nerdに渡します。それは私が尋ねたことは非常にばかげた質問だった。あなたはいつも私を助けた:) –

関連する問題