2017-02-27 57 views
0

我想爲bean類創建一個spark數據集,它有一個本身是一個bean和一個布爾型字段的字段,但是我這樣做的時候得到一個空指針異常。如果我爲第二個字段使用double而不是布爾值,則空指針異常消失。布爾值和嵌套bean的spark中的空指針異常

下面是應對片段:

SparkSession spark = SparkSession.builder().appName("Test").getOrCreate(); 
Encoder<cR> cREncoder = Encoders.bean(cR.class); 

cR cR1 = new cR (4.5, new c("abc")); 
cR cR2 = new cR(5.5, new c("xyz")); 
List<cR > listcR = Arrays.asList (cR1,cR2); 

Dataset<cR > cRData= spark.createDataset(listcR,cREncoder); 
System.out.println ("Duration in Main " + cR1.getDuration()); 
System.out.println ("Duration in Main " + cR2.getDuration()); 
cRData.printSchema(); 
cRData.show(); 

public class cR implements java.io.Serializable { 
    public double duration; 
// public Boolean version; 
    public c _c; 

    public cR (double v, c cu) { 
     this.duration = v; 
     this._c = cu; 
//  this.version = ver; 
     System.out.println("Duration : " + this.duration); 
    } 

// getter setter methods for data member 
} 

public class c implements java.io.Serializable { 
    public String id; 

    public c (String s) { 
     id= s; 
    } 

//getter and setters 

} 
+0

布爾是一個對象,而double是一個基元。 –

+0

即使它是一個對象,爲什麼它不起作用? – user1534615

+0

您可以更具體地瞭解NullPointerException發生的位置嗎?從註釋掉的代碼中很難看出原始問題。 –

回答

0

它看起來現有星火問題一直存在很長時間。解決方法是在bean類中將所有布爾值替換爲布爾值。