2017-07-26 74 views
0

我有一个RDD,我需要把它转换成一个数据集,我想:转换RDD到数据集在Java中星火

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

上述行引发错误,

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

然而

,我可以℃后转换为Dataset颠倒为Dataframe。下面的代码工作:

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

回答

1

.createDataset()接受RDD<T>不是JavaRDD<T>JavaRDD是RDD的一个包装,以便更容易地从java代码调用。它内部包含RDD,可以使用.rdd()访问。下面可以创建一个Dataset

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

0

您RDD使用.toDS()你会得到一个数据集。

让我知道它是否有帮助。干杯。

+1

这将在斯卡拉工作,而不是在Java中 – vdep

+0

尝试类似,'数据集 personDS = sqlContext.createDataFrame(personRDD,Person.class);' –

+0

它的一个' DataFrame',但我需要一个'数据集' – vdep