2017-02-27 2 views
0

J'essaie de créer un jeu de données spark pour une classe bean, qui possède un champ qui est lui-même un bean et un champ booléen, mais je reçois une exception null pointeur . Si j'utilise un double à la place d'un booléen pour le second champ, l'exception du pointeur nul a disparu.Exception de pointeur NULL dans l'étincelle pour les booléens booléens et imbriqués

Ci-dessous la face extrait:

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

Booléen est un objet alors que le double est un primitif. –

+0

Toujours même si c'est un objet, pourquoi ça ne marche pas? – user1534615

+0

Pouvez-vous être plus précis sur l'occurrence de l'exception NullPointerException? Il est difficile de dire à partir de votre code commenté quel est le problème original. –

Répondre

0

Il semble une question Spark existante existe depuis longtemps. La solution consiste à remplacer tous les booléens par des booléens dans votre classe de beans.