我正在尝试将使用Dataframe
编写的代码转换为DataSet
API。
问题是我将JavaRDD创建为:
final JavaRDD<String> abcJavaRdd= jsc.textFile("/path/to/textfile");
但是sqlContext类的
createDataset
方法期望使用RDD<T>
类型而不是JavaRDD<T>
类型。SQLContext sqlc = new SQLContext(jsc);
....
....
Encoder<Abc> abcEncoder= Encoders.bean(Abc.class);
Dataset<Abc> abcDataset= sqlc.createDataset(abcJavaRdd, abcEncoder);
上面的代码中的最后一行无效。
我想知道如何从“
org.apache.spark.rdd.RDD
”类型创建“ org.apache.spark.api.java.JavaRDD
”类型吗?我在Mapr群集上将Java 1.8与apache spark 1.6.1一起使用。
最佳答案
深入研究API之后,我找到了答案。org.apache.spark.api.java.JavaRDD
类提供了一个静态方法,用于将对象的JavaRDD
类型转换为org.apache.spark.rdd.RDD
,该对象被createDataset
类的SQLContext
方法接受。
Encoder<Abc> abcEncoder= Encoders.bean(Abc.class);
Dataset<Abc> abcDataset= sqlc.createDataset(JavaRDD.toRDD(abcJavaRdd), abcEncoder);
另一种方法是在
rdd()
上调用abcJavaRdd
方法。即abcJavaRdd.rdd()
关于java - Spark Java API:如何将JavaRDD转换为RDD类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51333091/