【问题标题】:Spark Java API: How to convert JavaRDD to RDD typeSpark Java API:如何将 JavaRDD 转换为 RDD 类型
【发布时间】:2018-07-13 21:35:25
【问题描述】:

我正在尝试将使用Dataframe 编写的代码转换为DataSet API。 问题是我将 JavaRDD 创建为:

final JavaRDD<String> abcJavaRdd= jsc.textFile("/path/to/textfile");

但是sqlContext类的createDataset方法需要RDD&lt;T&gt;类型而不是JavaRDD&lt;T&gt;类型。

SQLContext sqlc = new SQLContext(jsc);
....
....
Encoder<Abc> abcEncoder= Encoders.bean(Abc.class);
Dataset<Abc> abcDataset= sqlc.createDataset(abcJavaRdd, abcEncoder);

上面代码的最后一行不起作用。 我想知道如何从“org.apache.spark.api.java.JavaRDD”类型创建“org.apache.spark.rdd.RDD”类型?

我在 mapr 集群上使用 Java 1.8 和 apache spark 1.6.1。

【问题讨论】:

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


    【解决方案1】:

    通过API挖掘后,我找到了答案。

    org.apache.spark.api.java.JavaRDD 类公开了一个静态方法,将JavaRDD 类型的对象转换为org.apache.spark.rdd.RDDcreateDataset 类的createDataset 方法接受该方法SQLContext

    Encoder<Abc> abcEncoder= Encoders.bean(Abc.class);
    Dataset<Abc> abcDataset= sqlc.createDataset(JavaRDD.toRDD(abcJavaRdd), abcEncoder);
    

    另一种方法是在abcJavaRdd 上调用rdd() 方法。即abcJavaRdd.rdd()

    【讨论】:

      猜你喜欢
      • 2017-02-25
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      相关资源
      最近更新 更多