spark sql hive自定义函数(永久函数)

本文介绍了如何在Spark SQL和Hive SQL中使用自定义UDF,包括临时函数和永久函数的创建方法。重点讲解了永久函数的实现过程,通过Java开发UDF并将其添加到Spark的jar包中,以及如何在Hive中注册该函数。最后,通过一个测试用例展示了永久函数的使用。
摘要由CSDN通过智能技术生成


Spark(Hive) SQL中UDF的使用

相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark SQL本身内置的各类UDF也为我们的数据处理提供了不少便利的工具,当这些内置的UDF不能满足于我们的需要时,Hive SQL或Spark SQL还为我们提供了自定义UDF的相关接口,方便我们根据自己的需求进行扩展。
在Hive的世界里使用自定义UDF的过程是比较复杂的。我们需要根据需求使用Java语言开发相应的UDF(UDAF、UDTF),然后将UDF的代码及其依赖编译打包为Jar,使用方法有两种:
(1)临时函数
在一次会话(Session)中使用如下语句创建临时函数:

add jar /usr/local/fqlhadoop/spark/lib/hive_udf.jar
create temporary function row_sequence as 'org.rowsequence.RowSequence';
select id,row_sequence() from test.test limit 2;

这种方式有一个缺点:每一次会话过程中使用函数时都需要创建,而且仅在当前会话中有效。
(2)永久函数
这个特性需要高版本的Hive支持,它的好处是可以将UDF Jar存放至HDFS,函数仅需要创建一次即可以永久使用,如下:
(需要将hive_udf.jar(每台spark服务器

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值