gpt4 book ai didi

scala - 如何将 Spark 中 `Dataframe` 的两列合并为一个 2 元组?

转载 作者:行者123 更新时间:2023-12-01 13:58:54 28 4
gpt4 key购买 nike

我有一个 Spark DataFrame df有五列。我想添加另一列,其值是第一列和第二列的元组。使用 withColumn() 方法时,出现不匹配错误,因为输入不是列类型,而是 (Column,Column)。 我想知道在这种情况下,除了在行上运行 for 循环之外是否还有解决方案?

var dfCol=(col1:Column,col2:Column)=>(col1,col2)
val vv = df.withColumn( "NewColumn", dfCol( df(df.schema.fieldNames(1)) , df(df.schema.fieldNames(2)) ) )

最佳答案

您可以使用 struct 创建提供列的元组的函数:

import org.apache.spark.sql.functions.struct

val df = Seq((1,2), (3,4), (5,3)).toDF("a", "b")
df.withColumn("NewColumn", struct(df("a"), df("b")).show(false)

+---+---+---------+
|a |b |NewColumn|
+---+---+---------+
|1 |2 |[1,2] |
|3 |4 |[3,4] |
|5 |3 |[5,3] |
+---+---+---------+

关于scala - 如何将 Spark 中 `Dataframe` 的两列合并为一个 2 元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32799595/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com