Apache spark 从以下代码可以看出如何转换JavaRDD<;整数>;到数据帧或数据集

Apache spark 从以下代码可以看出如何转换JavaRDD<;整数>;到数据帧或数据集,apache-spark,apache-spark-sql,rdd,sparkcore,Apache Spark,Apache Spark Sql,Rdd,Sparkcore,我尝试了createDataFrame的多个选项和不同的重载函数。我面临将其转换为DF的问题。我需要提供什么样的beanclass才能使代码正常工作 与scala不同,Java中没有类似toDF()的函数将RDD转换为数据帧。可以有人帮助转换它根据我的要求 注意:我可以通过修改上述代码直接创建数据集,如下所示 sessn.createDataFrame(mappartRdd, beanClass); Dataset mappartDS=DF.repartition(3).mapPartitio

我尝试了createDataFrame的多个选项和不同的重载函数。我面临将其转换为DF的问题。我需要提供什么样的beanclass才能使代码正常工作

与scala不同,Java中没有类似toDF()的函数将RDD转换为数据帧。可以有人帮助转换它根据我的要求

注意:我可以通过修改上述代码直接创建数据集,如下所示

sessn.createDataFrame(mappartRdd, beanClass);
Dataset mappartDS=DF.repartition(3).mapPartitions(it->Arrays.asList(JavaConversions.asscalIterator(it.length()).iterator()、Encoders.INT());

但我想知道,如果我使用createDataFrame,为什么我的JavaRdd没有转换成DF/DS。任何帮助都将不胜感激

这似乎是对

我想,你正处于学习火花的阶段。我建议您了解提供的java API-

关于您的问题,如果您检查
createDataFrame
api,它如下所示-

def createDataFrame(rowRDD:JavaRDD[Row],schema:StructType):数据帧={
...
}
如您所见,它将
JavaRDD[Row]
和相关的
StructType
模式作为参数。因此,要创建
DataFrame
,它等于
Dataset
请使用下面的代码段-

JavaRDD-mappartRdd=DF.repartition(3.JavaRDD().mapPartitions(it->Arrays.asList(JavaConversions.asscalatitor(it.length()).iterator());
StructType架构=新StructType()
.add(new StructField(“value”,DataTypes.IntegerType,true,Metadata.empty());
Dataset df=spark.createDataFrame(mappartRdd.map(RowFactory::create),模式);
df.show(假);
printSchema();
/**
* +-----+
*|价值|
* +-----+
* |6    |
* |8    |
* |6    |
* +-----+
*
*根
*|--value:integer(nullable=true)
*/

:该解决方案确实有所帮助。我知道你从哪里来。但这是一个重载函数,它需要JavaRDD。createDataFrame(JavaRDD rowRDD,StructType模式)。但还有另外一个函数,它将泛型RDD作为参数,如下所示。createDataFrame(JavaRDD rdd,类beanClass)。这里是我被困在什么需要作为bean类传递的地方。如果你知道应该通过什么。请帮忙。但除此之外,我对提供的解决方案感到满意。
sessn.createDataFrame(mappartRdd, beanClass);
Dataset<Integer> mappartDS = DF.repartition(3).mapPartitions(it->  Arrays.asList(JavaConversions.asScalaIterator(it).length()).iterator(), Encoders.INT());