【问题标题】:How can create a new DataFrame from a list?如何从列表中创建新的 DataFrame?
【发布时间】:2019-11-24 14:41:45
【问题描述】:

大家好,我有这个函数可以从 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

谢谢

【问题讨论】:

  • 你想在这里实现什么?如果您要选择的列很少,您可以直接选择以获取带有选定列的新数据框为什么我们需要收集并制作列表并再次制作另一个数据框?对我来说,你似乎把事情复杂化了......
  • 我正在尝试从“内容”列创建一个新的 DataFrame,它是一个像这样的 json:´´´´´ {"_id":"5ccb24112584a9041e75dd38","currency":"MXN ","exchange_rate":1.0,"fraud_status":"in_review","status":"pending_payment"} ´´´´´ 所以每个 json 字段都是一列。我已经做到了,但我需要将其他列附加到这个新的 DataFrame
  • 你能在这里发布json吗

标签: scala apache-spark dataframe dataset


【解决方案1】:

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

如果您想从另一个数据框中引入列,请尝试加入。在任何情况下,使用 collect 都不是一个好主意,因为它会将您的所有数据带到驱动程序。

【讨论】:

    猜你喜欢
    • 2019-08-31
    • 1970-01-01
    • 2016-10-30
    • 2017-03-07
    • 2015-03-09
    • 1970-01-01
    • 2018-03-20
    • 2021-05-25
    • 1970-01-01
    相关资源
    最近更新 更多