提问者:小点点

将RDD转换为数据集在Java火花


我有一个RDD,我需要把它转换成一个数据集,我试过:

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

上面一行抛出错误,

无法解析方法createDataset(org.apache.spark.api.javaJavaRDD Main. Person,org.apache.park.sql.Encoder T)

但是,在转换为Dataframe后,我可以转换为Dataset。以下代码有效:

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

共3个答案

匿名用户

. createDataset()接受RDD

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

匿名用户

在您的rdd上使用. toDS()您将获得一个数据集。

如果有帮助就告诉我。干杯。

匿名用户

除了接受的答案,如果你想创建一个数据集

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