Spark-将列值传递给udf,然后在udf中获取另一个列值

时间:2018-09-01 06:22:52

标签: scala apache-spark user-defined-functions

我正在尝试制作一个采用列值的udf函数,但该列值的条件是我必须在该列中插入另一个列值。我的代码就像:

val udfMobileDeviceId = udf { (os_type: String) => 
    if (os_type == "android")  $"androidIdfa" else  $"appleIdfv"
}

1 个答案:

答案 0 :(得分:2)

将这些列传递给udf:

val udfMobileDeviceId = udf { (os_type: String, androidIfa:String, appleIdfv:String) => 
    if (os_type == "android")  androidIdfa else  appleIdfv
}

甚至更好:不要为此使用UDF,只需在DataFrame API中使用 :

df
.withColumn("mobileDeviceId", when($"os_type"==="andoid",$"androidIdfa").otherwise($"appleIdfv"))