大家好,我有此功能,可从DataFrame获取行值,将其转换为列表,然后从中创建Dataframe。
//Gets the row content from the "content column"
val dfList = df.select("content").rdd.map(r => r(0).toString).collect.toList
val dataSet = sparkSession.createDataset(dfList)
//Makes a new DataFrame
sparkSession.read.json(dataSet)
我需要做些其他列值的列表,以便我可以使用其他列值的另一个DataFrame
val dfList = df.select("content","collection", "h").rdd.map(r => {
println("******ROW********")
println(r(0).toString)
println(r(1).toString)
println(r(2).toString) //These have the row values from the other
//columns in the select
}).collect.toList
谢谢
答案 0 :(得分:1)
方法看起来不正确,您不需要收集数据框就可以添加新列。尝试使用withColumn()和columnRenamed()https://docs.azuredatabricks.net/spark/1.6/sparkr/functions/withColumn.html将列直接添加到数据框。
如果要从另一个数据框中获取列,请尝试加入。无论如何,使用collect都不是一个好主意,因为它将把您的所有数据带到驱动程序中。