java - Spark Java API : How to convert JavaRDD to RDD type

标签 java apache-spark apache-spark-sql apache-spark-dataset

我正在尝试转换使用 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.RDDSQLContext 类的 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/

相关文章:

java - 在 Java 中释放非对齐指针?

apache-spark - PySpark RDD 的有效 bool 减少 `any` 、 `all` ?

python - 在 Spark 数据框中生成可重复的唯一 ID

apache-spark - 缓慢加入pyspark,尝试重新分区

java - Java 编译器是否删除了检查枚举常量的无法访问的 if 语句?

java - 如何删除列表元素

java - (JTS) 线串是否正在进入或退出多边形

java - Apache Spark 还是级联框架?

python - 检索数据框中唯一的列组合的任意行

apache-spark - 如何将延迟加载 Apache Spark Dataframe 连接到 REST API