Spark编写UDF函数案例
一、前述
SparkSql中自定义函数包括UDF和UDAF
UDF:一进一出 UDAF:多进一出 (联想Sum函数)
二、UDF函数
UDF:用户自定义函数,user defined function
* 根据UDF函数参数的个数来决定是实现哪一个UDF UDF1,UDF2。。。。UDF1xxx
* UDF1 传一个参数 UDF2传两个参数。。。。。
orders表
+--------+-------+--------+------------+---------+-----------------+----+
|order_id|user_id|eval_set|order_number|order_dow|order_hour_of_day|dspo|
+--------+-------+--------+------------+---------+-----------------+----+
| 2539329| 1| prior| 1| 2| 08| 0.0|
| 2398795| 1| prior| 2| 3| 07|15.0|
| 473747| 1| prior| 3| 3| 12|21.0|
| 2254736| 1| prior| 4| 4| 07|29.0|
| 431534| 1| prior| 5| 4| 15|28.0|
+--------+-------+--------+------------+---------+-----------------+----+
需求:将orders表中 order_dow和order_number进行求和
编写UDF一定要导入
import org.apache.spark.sql.functions._
编写UDF
val plusUdf = udf((col1:String,col2:String)=>col1.toInt + col2.toInt)
调用UDF
orders.withColumn("plus",plusUdf(col("order_dow"),col("order_number")))