类似于hive当中的自定义函数,我们在spark当中,如果内置函数不够我们使用,我们同样可以使用自定义函数来实现我们的功能,spark当中的自定义函数,同样的也有
- UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等
- UDAF(User- Defined Aggregation Funcation),用户自定义聚合函数,类似在group by之后使用的sum,avg等
- UDTF(User-Defined Table-Generating Functions),用户自定义生成函数,有点像stream里面的flatMap
无论Hive还是SparkSQL分析处理数据时,往往需要使用函数,SparkSQL模块本身自带很多实现公共功能的函数,在org.apache.spark.sql.functions中。SparkSQL与Hive一样支持定义函数:UDF和UDAF,尤其是UDF函数在实际项目中使用最为广泛。
回顾Hive中自定义函数有三种类型:
- 第一种:UDF(User-Defined-Function) 函数
- 一对一的关系,输入一个值经过函数以后输出一个值;
- 在Hive中继承UDF类,方法名称为evaluate,返回值不能为void,其实就是实现一个方法;
- 第二种:UDAF(User-Defined Aggregation Function) 聚合函数
- 多对一的关系,输入多个值输出一个值,通常与groupBy联合使用;
本文介绍了SparkSQL中的自定义函数,包括UDF(一对一关系)、UDAF(聚合函数,多对一关系)。SparkSQL支持这两种类型的自定义函数,提供了通过DSL编程和SQL编程两种方式定义UDF。文章通过实例演示了如何使用Lambda表达式实现UDF,将姓名转换为小写,并展示了UDAF的使用,计算json数据的平均工资。
订阅专栏 解锁全文
743

被折叠的 条评论
为什么被折叠?



