【发布时间】:2019-08-30 08:22:09
【问题描述】:
我需要将多个列附加到现有的 spark 数据框中,其中列名在 List 中给出 假设新列的值是恒定的,例如给定的输入列和数据框是
val columnsNames=List("col1","col2")
val data = Seq(("one", 1), ("two", 2), ("three", 3), ("four", 4))
在附加两列之后,假设 col1 的常量值为“val1”,col2 的值为“val2”,输出数据帧应该是
+-----+---+-------+------+
| _1| _2|col1 |col2|
+-----+---+-------+------+
| one| 1|val1 |val2|
| two| 2|val1 |val2|
|three| 3|val1 |val2|
| four| 4|val1 |val2|
+-----+---+-------+------+
我写了一个函数来追加列
def appendColumns (cols: List[String], ds: DataFrame): DataFrame = {
cols match {
case Nil => ds
case h :: Nil => appendColumns(Nil, ds.withColumn(h, lit(h)))
case h :: tail => appendColumns(tail, ds.withColumn(h, lit(h)))
}
}
有没有更好的方法和更实用的方法来做到这一点。
谢谢
【问题讨论】:
-
澄清一下,在
appendColumns中,列名与列值相同,而在预期的输出数据框中,值例如col1是val1,可以相同(列名和值)还是要分开? -
列名和列值可以相同。
-
奇数关闭原因。
-
您好,您找到问题的答案了吗?还是有什么不清楚的地方?
-
感谢 Oli,是的,建议的方法非常好。
标签: scala apache-spark apache-spark-sql bigdata