如何从列表创建新的DataFrame?

时间:2019-07-15 21:34:18

标签: scala apache-spark dataframe dataset

大家好,我有此功能,可从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

谢谢

1 个答案:

答案 0 :(得分:1)

方法看起来不正确,您不需要收集数据框就可以添加新列。尝试使用withColumn()和columnRenamed()https://docs.azuredatabricks.net/spark/1.6/sparkr/functions/withColumn.html将列直接添加到数据框。

如果要从另一个数据框中获取列,请尝试加入。无论如何,使用collect都不是一个好主意,因为它将把您的所有数据带到驱动程序中。