gpt4 book ai didi

scala - Spark DataFrame 计算列

转载 作者:行者123 更新时间:2023-12-02 21:01:49 27 4
gpt4 key购买 nike

我正在学习 Spark (scala),并且正在创建一个包含派生列的数据框。我正在尝试找出最佳实践。

我的用例有 2 个派生列,它们寻找另一列的值 -例如 -

if (col22 = "USD") then col1 = "US" elseif (col22 = "CDN" the col1 = "CA" else null)

另一个用例是

if(col23 = "us" && col100 = "abc") then col2 = "10" else if (col23 = "us" && col100 = "bacd" && col99 is null then col2 = 11 else null)

问题 - 我已经为上述计算编写了 UDF 函数。我想知道有更好的方法吗?编写 udf 函数是最佳实践。我只会在代码中使用这些函数一次。

我的 Scala 代码 -

def udf1 = udf((col22: String){  (col22) match {
case col22 if (col22 == "USD") => "US"
case col22 if (col22 == "CDN") => "CA"
case _ => null } })

val df1= df.select($"col1", $"col2", udf1($"col22").as("newcol"), udf2($"col23", $"col100").as(newcol2))

最佳答案

你可以这样做:

val df1 = df.withColumn(
"newcol",
when($"col22" === "USD", lit("US")).otherwise(
when($"col22" === "CDN", lit("CA")).otherwise(lit(null))
)
)

关于scala - Spark DataFrame 计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899320/

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