我需要将多列添加到现有的Spark DataFrame中,其中列名在列表中给出,假设新列的值是固定的。例如,给定输入列和数据框如下:
我已经编写了一个用于追加列的函数。
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
,它们可以相同(列名和值),还是您希望它们分开? - Shaido