2017-02-27 16 views
0

Beanクラスのスパークデータセットを作成しようとしていますが、それ自体がBeanおよびブール値フィールドのフィールドを持っていますが、 。 2番目のフィールドにブール値の代わりに2倍を使用すると、NULLポインターの例外はなくなります。ブール型およびネスト型のBeanのスパークにおけるヌルポインタ例外

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

Booleanはオブジェクトですが、doubleはプリミティブです。 –

+0

まだオブジェクトであっても、なぜ機能しないのですか? – user1534615

+0

NullPointerExceptionがどこで発生しているのかを具体的に知ることができますか?あなたのコメントされたコードから元の問題が何であるかを伝えるのは難しいです。 –

答えて

0

これは、既存のスパーク問題は長い間、既存れになります。以下は

は、スニペットを対処です。回避策は、すべてのBooleanをBeanクラスのbooleanに置き換えることです。

関連する問題