我想从解析的字符串 RDD 手动创建一个数据框。我已经有了我的 StructType,我可以从RowFactory.create(StructType[])
. 我看到一个名为sqlContext.createDataFrame(RDD<Row>, StructType)
RDD 和 StructType 的方法。那么如何将我的 Row 对象变成 RDD 呢?
问问题
1504 次
1 回答
0
我假设您解析的字符串都在驱动程序内存中。如果不是,您将不得不创建一个RDD<String>
usingsc.textFile
然后将其映射到RDD<StructType>
.
您可以使用sc.parallelize
将StructType[]
数组或列表转换为 rdd。您无需将其转换为一行。确保 StructType 对象是可序列化的。
我没有在java中做过spark,所以我可能有一些语法错误,但这是基本的想法。
//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);
于 2015-08-11T03:11:32.010 回答