大数据全系列 教程
1869个小节阅读:464.7k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
sparkSession.udf.register()
注册的UDF函数。
语法:
xxxxxxxxxx
/*参数1:UDF名称,可被用于SparkSQL的sql语句中
参数2:被注册成UDF的方法
参数3:声明UDF的返回值类型
*/
sparkSession.udf.register(参数1,参数2,参数3)
代码演示:
xxxxxxxxxx
package com.itbaizhan.sql.deffun
import org.apache.spark.sql.types.IntegerType
import org.apache.spark.sql.{DataFrame, SparkSession}
object UserDefUDF {
def main(args: Array[String]): Unit = {
//1.创建SparkSession对象
val spark: SparkSession = SparkSession.builder()
.master("local[*]")
.appName("udf")
.getOrCreate()
//2.创建List数据
val nameList: List[String] = List[String](
"zhangsan", "lisi", "wangwu", "zhaoliu", "tianqi")
//4.隐式转换
import spark.implicits._
//5.转换DF对象
val nameDF: DataFrame = nameList.toDF("name")
//6.将df注册为临时视图
nameDF.createOrReplaceTempView("students")
//7.注册udf函数
//spark.udf.register("str_len",(name:String)=>name.length,IntegerType)
//可以省略自定义函数的返回值类型
spark.udf.register("str_len",(name:String)=>name.length)
//8.使用udf函数 strLen
spark.sql(
"""
|select name,str_len(name) as length
|from students
|order by length desc
|""".stripMargin).show()
//3.关闭
spark.close()
}
}
实时效果反馈
1. 关于spark.udf.register("strlen", (name: String) =>name.length, IntegerType)
的相关描述,错误的是:
A strlen
:注册的UDF的名称, 这个udf名称, 可以用于SparkSQL的sql语句中。
B (name: String) =>name.length
:UDF的处理逻辑, 是一个单独的方法。
C IntegerType
:声明UDF的返回值类型, 注意: UDF注册时候, 必须声明返回值类型, 并且UDF的真实返回值和声明的返回值不一致。
答案:
1=>C UDF的返回值类型可以不声明;如果声明了,真实返回值一定要和声明的返回值一致。