Hive UDF 用户自定义函数

 
用户自定义函数用户:
根据条件在hive中查询,将统计的结果导入到mysql中,通用的函数
根据我们的主键,取出时间戳信息和设备id
 

1.查看函数的命令

# 查看系统自带的函数
show functions;
 
# 显示自带的函数的用法
desc function upper;
 
# 详细显示自带的函数的用法
desc function extended upper;
 

2.用户自定义函数描述

常用用户自定义函数分类为以下三种:
  • UDF(User-Defined-Function):一进一出
  • UDAF(User-Defined Aggregation Function):聚集函数,多进一出,类似于:count/min/max
  • UDTF(User-Defined Table-Generating Functions):一进多出
 

3.UDF实现步骤

  • 继承org.apache.hadoop.hive.ql.UDF类
  • 实现evaluate()方法,支持evaluate()方法重载
  • 在hive的命令行窗口创建函数
  • 添加jar包:add jar jar包的路径
  • 创建function:create [temporary] function [dbname] function_name AS class_name
注意事项:
  • UDF必须要有返回类型,可以返回null,但是返回类型不能为void
  • UDF中常用Text/LongWritable等类型,不推荐使用java类型
 

4.UDF实例

(1)创建一个java工程,并创建一个lib文件夹,将hive的jar包解压后,将apache-hive-1.2.1-bin\lib文件下的jar包都拷贝到java工程中。
或者可以直接配置maven。
(2)创建一个类
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
import java.io.UTFDataFormatException;
public class HelloUdf extends UDF {
 public Text evaluate (final Text t) {
     if (t == null) {
         return null;
     }
     return new Text("Hello:" + t);
 }
 
(3)永久函数,把jar包上传到hdfs上
hdfs dfs -put udf_tes.jar /lib
 
(4)创建永久函数
CREATE FUNCTION udf_test
AS 'com.unis.TestUDF' 
USING JAR 'hdfs:///lib/udf_tes.jar';
 
 
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值