2016-03-25 18 views
1

ich den folgenden Code habe Daten von einem Parkett zu DatenrahmenWie erstelle ich ein DataSet aus einem Parkett?

DataFrame addressDF = sqlContext.read().parquet(addressParquetPath); 

lesen Wie kann ich Daten von Parkett zu DATA SET lesen?

Dataset dataset = sqlContext.createDataset(sqlContext.read().parquet(propertyParquetPath).toJavaRDD(), Encoder.); 

Was sollte der Encoder-Parameter enthalten? Muss ich auch eine Eigenschaft Klasse erstellen und dann übergeben, oder wie ist es?

Antwort

0

Die Encoder für einen Typ T ist die Klasse, die Spark mitteilt, wie Instanzen von T decodiert und aus der internen Spark-Darstellung codiert werden können. Es enthält das Schema der Klasse und die Skala ClassTag, die verwendet wird, um Ihre Klasse über Reflektion zu erstellen.

In Ihrem Code, spezialisieren Sie Dataset nicht über irgendeinen Typ T, also kann ich keinen Encoder für Sie erstellen, aber ich kann Ihnen als Beispiel die von Databricks Spark documentation geben, die ich vorschlagen zu lesen, weil es großartig ist. Zunächst einmal wollen wir die Klasse erstellen University, die wir in eine DateSet laden möchten:

public class University implements Serializable { 
    private String name; 
    private long numStudents; 
    private long yearFounded; 

    public void setName(String name) {...} 
    public String getName() {...} 
    public void setNumStudents(long numStudents) {...} 
    public long getNumStudents() {...} 
    public void setYearFounded(long yearFounded) {...} 
    public long getYearFounded() {...} 
} 

Nun University ist ein Java Bean und die Funken Encoders Bibliothek bietet eine Möglichkeit, Encoder für Java Beans mit der Funktion zu erstellen bean :

Encoder<University> universityEncoder = Encoders.bean(University.class) 

die dann, ohne sie zuerst in einen Datenrahmen laden (was überflüssig ist) ein Datensatz von University von Parkett lesen können verwendet werden:

Dataset<University> schools = context.read().json("/schools.json").as(universityEncoder); 

und jetzt schools ist ein Dataset<University> aus einer Parkettdatei lesen.

Verwandte Themen