2016-06-18 24 views
0

目前我正在嘗試學習映射減少二次排序,但運行我的映射時得到空指針異常的錯誤。我正在使用這個link 但運行代碼時,我得到了錯誤。這裏是我的callStack。變得空指針異常

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

@Burrito'字符串[]線= value.toString()分割( 「」);' 地圖。函數將調用每一行並將其傳遞給值 –

回答

2

你不ACTU盟友創建任何類變量。這些都將被未初始化:

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

例如name應該看起來像:

private Text name = new Text(); 
+0

感謝@Binary Nerd,尋求幫助。這是非常愚蠢的問題,我問。你總是幫助我:) –