convert RDD to Dataset in Java Spark

Viewed 19622

I have an RDD, i need to convert it into a Dataset, i tried:

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

the above line throws the error,

cannot resolve method createDataset(org.apache.spark.api.java.JavaRDD Main.Person, org.apache.spark.sql.Encoder T)

however, i can convert to Dataset after converting to Dataframe. the below code works:

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

In addition to accepted answer, if you want to create a Dataset<Row> instead of Dataset<Person> in Java, please try like this:

StructType yourStruct = ...; //Create your own structtype based on individual field types
Dataset<Row> personDS =  sqlContext.createDataset(personRDD.rdd(), RowEncoder.apply(yourStruct));
Related