如何将JavaPairRDD转换为数据集?

SparkSession.createDataset()只允许List, RDD, or Seq – 但它不支持JavaPairRDD

因此,如果我有一个我想要创建DatasetJavaPairRDD ,那么SparkSession.createDataset()限制的可行工作区SparkSession.createDataset()可以创建包含两个字段的包装器UserMap类: StringUser

然后执行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");