Spark Scala Dataframe如何使用两个或更多现有列创建新列

Spark Scala Dataframe如何使用两个或更多现有列创建新列,scala,apache-spark,Scala,Apache Spark,假设我有一个Spark Scala数据帧对象,如: +----------------+ |col1 | col2| +----------------+ |1 |2 | |3 |4 | +----------------+ 我想要一个数据帧,如: +--------------------+ |col1 | col2 | col3| +--------------------+ |1 |2 |3 | |3 |4

假设我有一个Spark Scala数据帧对象,如:


+----------------+
|col1 | col2|
+----------------+
|1     |2        |
|3     |4        |
+----------------+

我想要一个数据帧,如:

+--------------------+
|col1 | col2 | col3|
+--------------------+
|1     |2     |3     |
|3     |4     |7     |
+--------------------+


这将
col1
col2
添加到
col3
,谁能告诉我怎么做
WithColumn
只取一列作为参数,而我需要取两列。

您可以使用
WithColumn
选择作为参数

val df = Seq(
  (1,2),
  (3,4)
).toDF("col1", "col2")

df.withColumn("col3", $"col1" + $"col2").show(false)

df.select($"col1", $"col2", ($"col1" + $"col2").as("col3")).show(false)
输出:

+----+----+----+
|col1|col2|col3|
+----+----+----+
|1   |2   |3   |
|3   |4   |7   |
+----+----+----+

WithColumn接受两个参数,一个是名称,一个是应生成类型列的函数-因此结果为列的函数或表达式是有效的,因此您可以执行以下操作(或类似操作)


考虑<>代码>列是懒惰的,在运行时将被优化,我确信您可以在两列中调用它两次,没有任何问题。
df.withColumn("col3", df("col1")+df("col2"))