我正在尝试转换使用 Dataframe
编写的代码进入DataSet
API。
问题是我将 JavaRDD 创建为:
final JavaRDD<String> abcJavaRdd= jsc.textFile("/path/to/textfile");
但是createDataset
sqlContext 类的方法期望 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
由 SQLContext
类的 createDataset
方法接受。
Encoder<Abc> abcEncoder= Encoders.bean(Abc.class);
Dataset<Abc> abcDataset= sqlc.createDataset(JavaRDD.toRDD(abcJavaRdd), abcEncoder);
另一种方法是调用 abcJavaRdd
上的 rdd()
方法。即abcJavaRdd.rdd()
关于java - Spark Java API : How to convert JavaRDD to RDD type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51333091/