2017-07-26 5 views
0

ich eine RDD haben, ich brauche es in einen Datensatz zu konvertieren, ich versuchte:RDD konvertieren Datensatz in Java Spark-

Dataset<Person> personDS = sqlContext.createDataset(personRDD, Encoders.bean(Person.class)); 

die obige Zeile den Fehler wirft,

nicht Methode lösen CreateDataSet (org.apache.spark.api.java.JavaRDD Main.Person, org.apache.spark.sql.Encoder T)

jedoch kann ich Dataset nach c konvertiert onverting zu Dataframe. der folgende Code funktioniert:

Dataset<Row> personDF = sqlContext.createDataFrame(personRDD, Person.class); 
Dataset<Person> personDS = personDF.as(Encoders.bean(Person.class)); 

Antwort

1

.createDataset() akzeptiert RDD<T> nicht JavaRDD<T>. JavaRDD ist ein Wrapper um RDD, um Aufrufe von Java-Code einfacher zu machen. Es enthält RDD intern und kann unter Verwendung von .rdd() zugegriffen werden. Folgendes kann erstellen Dataset:

Dataset<Person> personDS = sqlContext.createDataset(personRDD.rdd(), Encoders.bean(Person.class))

0

auf rdd Verwendung .toDS() Sie einen Datensatz erhalten.

Lassen Sie mich wissen, wenn es hilft. Prost.

+1

Dies wird in Scala arbeiten, nicht in Java – vdep

+0

etwas versuchen, wie, 'Datensatz personDS = sqlContext.createDataFrame (personRDD, Person.class);' –

+0

its a ' DataFrame', aber ich brauche ein 'Dataset' – vdep