本文主要是记录关于自定义函数的用法,spark-sql中的自定义函数有两种方式:
- sqlContext.udf.register,这种方式只能在sql中可见;
- spark.sql.function.udf(),这种方式外部都可见;
本文主要介绍第一种方式,我目前应用到的是第一种方式,代码和案例如下:
import sparkSession.implicits._
import org.apache.spark.sql.functions._
// 自定义spark session函数以及应用
val executeCaseSql = sparkSession.udf.register("executeCaseSql",
(caseSql: String) => caseSql.trim
)
caseDataUpdateInTimeDf.withColumn("max_date", executeCaseSql($"case_sql")).show()
经过测试是可以正常执行的,关于第二种方式的用法,我们后期补充。