如何从一组行创建数据框?

时间:2015-08-10 18:43:41

标签: java apache-spark spark-dataframe

我想从解析后的字符串RDD手动创建数据帧。我已经有了我的StructType,我可以从RowFactory.create(StructType[])创建一个Row对象。我看到一个名为sqlContext.createDataFrame(RDD<Row>, StructType)的方法,它采用RDD和StructType。那么如何将Row对象转换为RDD?

1 个答案:

答案 0 :(得分:0)

我假设您解析的字符串全部在驱动程序内存中。如果不是,则必须使用RDD<String>创建sc.textFile,然后将其映射到RDD<StructType>

您可以使用sc.parallelizeStructType[]数组或列表转换为rdd。您不需要将其转换为行。确保StructType对象是可序列化的。

我还没有在java中完成火花,所以我可能会遇到一些语法错误,但这是基本的想法。

//say you have a list of structType in memory
List<StructType> structTypeList = Lists.newArrayList(structTypeObj1, structTypeObj2);

//now convert it to an rdd
JavaRDD<StructType> rdd = sc.parallelize(structTypeList);