概述
spark SQL 自定义函数:
自定义函数:
第一种: U D F (用户自定义函数)函数
特点: 一对一的关系,输入一个值以后输出一个值 (一进一出) 大部分的内置函数都是U D F函数
比如:substr()
第二种:U D A F 用户自定义聚合函数
特点:多进一出
比如SUM() count() avg()....
第三种:U D T F 用户自定义表生成函数
特点:一进多出(给一个数据,返回多行多列的数据)
比如:explode()爆炸函数
不管是spark SQL内置函数还是hive内置函数都属于这三种.
自定义函数的目的:
扩充函数,因为在进行业务分析的时候,有时候会用到某些功能,但是内置函数没有这些功能,于是进行自定义函数进行相关业务分析.
目前支持自定义函数:
spark sql : UDF UDAF
python语言只支持U D F 如果想要定义UDAF ,需要使用pandas U D F 实现
注意点:
在使用python 原生 spark sql 的UDF方案,整个执行效率不是很高,因为整个内部运算是一个来处理,一个个返回,这样会导致频繁进行 序列化和反序列化操作 从而影响效率.
后续改进操作: 采用jave 或者scala定义,然后python调用即可
目前主要版本:pandas的UDF函数解决,同时采用apache arrow内存数据结构框架来实现,提升整个执行效率.
spark sql定义UDF函数:
如何自定义UDF函数:
第一步:在python定义一个python函数
第二步:将这个函数注册到spark sql中:
方式一:
参数1:UDF函数的名字,此名字可以在后续SQL中使用
参数2:python的函数名称(需要将那个python的函数进行注册,写上这dui函数的名称)
参数3:python函数的返回值类型
UDF对象: 应用在DSL中使用
方式二:
udf对象 = F.udf(参数1,参数2)
参数说明:
参数1: python的函数名称(需要将那个python的函数进行注册,写上这个函数的名称)'
参数2: python函数的返回值类型
UDF对象:应用在DSL中使用
第三步: 在DSL中SQL中使用即可.
最后
以上就是威武时光为你收集整理的spark SQL自定义函数:的全部内容,希望文章能够帮你解决spark SQL自定义函数:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复