Hive UDF

本文介绍了如何在Hive中创建UDF,以满足从date字段中提取年份的需求。首先,环境配置包括Linux Ubuntu、Hive和Hadoop。接着,详细阐述了UDF的编写步骤,包括创建Java项目、编写YEAR类以及打包成jar。最后,将jar包添加到Hive的lib目录,创建临时函数并应用到buyer_favorite表中,成功实现了提取年份的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统环境

Linux Ubuntu 16.04

jdk-7u75-linux-x64

hive-1.1.0-cdh5.4.5

hadoop-2.6.0-cdh5.4.5

相关知识

虽然HiveQL内置了216个函数,但在某些特殊场景下,可能还需要自定义函数。Hive的UDF包括三种:UDF(User-Defined Function)、UDAF(User-Defined Aggregate Function)和UDTF(User-Defined Table-Generating Function)。普通UDF支持一个输入产生一个输出,UDAF支持多个输入一个输出,UDTF支持一个输入多个输出。Hive只支持Java编写的UDF,其他的编程语言只能通过select transform转化为流来与Hive交互。

UDF的用法:

1.UDF函数可以直接应用于select语句,对查询结构做格式化处理后,再输出内容。

2.编写UDF函数的时候需要注意以下几点:

①自定义UDF需要继承org.apache.hadoop.hive.ql.UDF类。

②需要实现evaluate方法。

③evaluate函数支持重载。

任务内容

某电商有买家收藏夹(buyer_favorite)表,内含(buyer_id,goods_id,date)三个字段,需求是取出date字段中的年份。

我们编写UDF函数,实现需求。

初始数据如下:
在这里插入图片描述
目标数据如下:
在这里插入图片描述

任务步骤

1.在/data目录下创建/hive5文件夹

mkdir -p /data/hive5  

2.切换到/data/hive5目录下,使用wget命令,下载http://192.168.1.100:60000/allfiles/hive5中的文件。

cd /data/hive5
wget http://192.168.1.100:60000/allfiles/hive5/udfjar.tar.gz
wget http://192.168.1.100:60000/allfiles/hive5/sydata

3.将udfjar.tar.gz解压到当前目录。

tar zxvf udfjar.tar.gz  

4.输入jps检查Hadoop相关进程,是否已经启动。若未启动,切换到/apps/hadoop/sbin目录下,启动Hadoop。

jps  
cd /apps/hadoop/sbin  
./start-all.sh  

5.开启Hive之前需要保证Mysql启动。执行以下命令,查看Mysql的运行状态。(密码:zhangyu)

sudo service mysql status  

在这里插入图片描述
6.输出显示Mysql未启动。执行以下启动命令。

sudo service mysql start  

7.开启Eclipse,新建Java项目,名为hiveudf。
在这里插入图片描述
8.新建包,名为hive.udf。
在这里插入图片描述
9.新建类,名为YEAR。
在这里插入图片描述
10.右键单击项目名,新建文件夹,名为udfjar用于存放所需jar包,将/data/hive5/udfjar中的jar包全部导入到文件夹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值