大数据全系列 教程
1869个小节阅读:467.7k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
import org.apache.spark.sql.functions.udf
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.expressions.UserDefinedFunction
object UserDefUDF1 {
def main(args: Array[String]): Unit = {
//1.创建SparkSession对象
val spark: SparkSession = SparkSession.builder()
.master("local[*]")
.appName("udf1")
.getOrCreate()
//3.案例1:无参数数的自定义函数
val randomUDFObj: UserDefinedFunction = udf(() => Math.random())
spark.udf.register("random",randomUDFObj)
// spark.sql("select random()").show()
//4.案例2.一个参数的自定义函数
val plusOneUDFObj: UserDefinedFunction = udf((x: Int) => x + 1)
spark.udf.register("plus_one",plusOneUDFObj)
// spark.sql("select plus_one(5)").show()
//5.案例3.两个参数的自定义函数
//spark.udf.register("str_len2",(str:String,num:Int)=>str.length+num)
//函数简化
spark.udf.register("str_len2",(_:String).length+(_:Int))
// spark.sql("select str_len2('test',1)").show()
//6.案例4.用在where语句中的UDF
//spark.udf.register("arg_filter",(n:Int)=>n>5)
//函数的简化写法
spark.udf.register("arg_filter",(_:Int)>5)
spark.range(1,10).createOrReplaceTempView("test")
spark.sql("select * from test where arg_filter(id)").show()
//2.关闭
spark.close()
}
}