【发布时间】:2017-10-07 14:54:52
【问题描述】:
我正在尝试将我的自定义对象(Java 类)的 RDD 转换为 Dataframe,我只是使用方法 hiveContext.createDataframe 指定对象的类。问题是数据框是用一些奇怪的顺序创建的列,一旦我将 DF 写入 Hive,值就在错误的列中。 这是我的代码:
var objectRDD = tableDF.map((r: Row) => new Attuatore(r(0),r(1)...))
[.. operations with the RDD ..]
val resultDF = hiveContext.createDataFrame(objectRDD, classOf[Attuatore])
resultDF.write.mode("append").saveAsTable(outputTable)
到目前为止,我发现的唯一解决方案是将字段按正确的顺序转换回 RDD[Attuatore] 到 RDD[Row],然后调用 createDataFrame() 指定架构,但因为我必须这样做这有很多类,我更喜欢第一种方法来拥有更简洁的代码。
【问题讨论】:
标签: java scala apache-spark dataframe