2

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

4

1 回答 1

0

我假设您解析的字符串都在驱动程序内存中。如果不是,您将不得不创建一个RDD<String>usingsc.textFile然后将其映射到RDD<StructType>.

您可以使用sc.parallelizeStructType[]数组或列表转换为 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 回答