2017-07-26 44 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