UDF类似于map或lambda,其定义的函数可用于Spark中的DataFrame中行数据的处理。
val df = Seq(
(1, "boy", "裤子"),
(2, "girl", "裤子"),
(3, "boy", "裙子"),
(4, "girl", "裙子"),
(5, "girl", "裙子")
).toDF("id", "sex", "dressing")
def addpre(pre: String) = udf{ (xing: String, dress: String) => xing + pre + dress }
df.select($"id", $"sex", $"dressing", addpre(" dresses ")($"sex", $"dressing")).show()
// 运行结果
+---+----+--------+------------------+
| id| sex|dressing|UDF(sex, dressing)|
+---+----+--------+------------------+
| 1| boy| 裤子| boy dresses 裤子|
| 2|girl| 裤子| girl dresses 裤子|
| 3| boy| 裙子| boy dresses 裙子|
| 4|girl| 裙子| girl dresses 裙子|
| 5|girl| 裙子| girl dresses 裙子|
+---+----+--------+------------------+