我有一个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));
. 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));