如何将JavaPairRDD转换为数据集?
SparkSession.createDataset()
只允许List, RDD, or Seq
– 但它不支持JavaPairRDD
。
因此,如果我有一个我想要创建Dataset
的JavaPairRDD
,那么SparkSession.createDataset()
限制的可行工作区SparkSession.createDataset()
可以创建包含两个字段的包装器UserMap
类: String
和User
。
然后执行spark.createDataset(userMap, Encoders.bean(UserMap.class));
?
如果您可以将JavaPairRDD
转换为List
那么您可以使用JavaPairRDD
List
createDataset方法。 见下面的示例代码。
JavaPairRDD pairRDD = ...; Dataset df = spark.createDataset(pairRDD.collect(), Encoders.tuple(Encoders.STRING(),Encoders.bean(User.class))).toDF("key","value");
或者你可以转换为RDD
Dataset df = spark.createDataset(JavaPairRDD.toRDD(pairRDD), Encoders.tuple(Encoders.STRING(),Encoders.bean(User.class))).toDF("key","value");