1.1 关于自定义函数

1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。

2)当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。

3)根据用户自定义函数类别分为以下三种:

​(1)UDF(User-Defined-Function)

​一进一出

​(2)UDAF(User-Defined Aggregation Function)

​聚集函数,多进一出

​类似于:count/max/min

​(3)UDTF(User-Defined Table-Generating Functions)

​一进多出

​如lateral view explore()

4)官方文档地址

5)编程步骤:

​(1)继承org.apache.hadoop.hive.ql.exec.UDF

​(2)需要实现evaluate函数;evaluate函数支持重载;

​(3)在hive的命令行窗口创建函数

​a)添加jar

add jar linux_jar_path

​b)创建function

create [temporary] function [dbname.]function_name AS class_name;

​(4)在hive的命令行窗口删除函数

Drop [temporary] function [if exists] [dbname.]function_name;

6)注意事项

​(1)UDF必须要有返回类型,可以返回null,但是返回类型不能为void;

1.2 案例实操

1)定义了四个UDF类,代码见:GitHub

使用方法:你可以选择在IDEA中checkout该项目,然后使用maven打成jar包后放置到hive的安装目录,“hive/lib”目录下

如:

2)在hive中执行add操作,添加所配置的jar包:

hive (default)> add jar /opt/module/hive/lib/log-hive.jar;

3)注册永久函数

hive (default)>create function getdaybegin AS 'com.bigdata.hive.DayBeginUDF';

hive (default)>create function getweekbegin AS 'com.bigdata.hive.WeekBeginUDF';

hive (default)>create function getmonthbegin AS 'com.bigdata.hive.MonthBeginUDF';

hive (default)>create function formattime AS 'com.bigdata.hive.FormatTimeUDF';

4)验证函数

​由于我将Hive的元数据信息选择保存在MySQL中(Hive的Metastore默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore),所以选择登录mysql

[bigdata@hadoop101 ~]$ mysql -uroot -p000000

mysql> show databases;

mysql> use metastore;

mysql> show tables;

mysql> select * from FUNCS;

下面是我在Dbeaver中查看到的表的具体信息:

可以发现四个自定义函数已经添加进去了。

关于FUNC表字段的描述:

5)删除函数

hive (applogsdb)> drop function getdaybegin;

hive (applogsdb)> drop function getweekbegin;

hive (applogsdb)> drop function getmonthbegin;

hive (applogsdb)> drop function formattime;

6)注意:在哪个数据库中注册的永久函数,必须在哪个数据库下将该方法删除

比如在applogsdb数据库中创建的方法,必须在该数据中调用drop方法才能实现删除功能。

hive 元数据 自定义_Hive中的用户自定义函数相关推荐

  1. hive 元数据 自定义_如何在Hive中创建自定义函数UDF及如何直接通过Impala的同步元数据重用UDF的jar文件-阿里云开发者社区...

    如何在Hive中创建自定义函数UDF及使用 如何在Impala中使用Hive的自定义函数 UDF函数开发 使用Intellij工具开发Hive的UDF函数,进行编译: 1.使用Intellij工具通过 ...

  2. Hive中的用户自定义函数UDF

    Hive中的自定义函数允许用户扩展HiveQL,是一个非常强大的功能.Hive中具有多种类型的用户自定义函数.show functions命令可以列举出当前Hive会话中的所加载进来的函数,包括内置的 ...

  3. 分析函数hive计算均值_Hive中的函数

    函数分类 UDF user-define-function:用户定义函数 进一条出一条 UDAF user-define-aggregation-function:用户定义聚合函数 进多条出一条 如: ...

  4. 自定义JSP中的Taglib标签之四自定义标签中的Function函数

    转自http://www.cnblogs.com/edwardlauxh/archive/2010/05/19/1918589.html 之前例子已经写好了,由于时间关系一直没有发布,这次带来的是关于 ...

  5. 自定义 C++ 中的 range() 函数

    在 Python 生成连续的可迭代的序列,常用十分 convenient 的 range()函数(包含左端点,不包含右端点): # Python >>> range(5) range ...

  6. mysql explode函数_hive中,lateral view 与 explode函数

    hive中常规处理json数据,array类型json用get_json_object(#,"$.#")这个方法足够了,map类型复合型json就需要通过数据处理才能解析. exp ...

  7. db2自定义函数能返回几个参数_DB2 用户自定义函数

    用户自定义函数 DB2 内部提供了大量的函数,例如求某个字段最大值的 MAX() 函数,求某个日期所在年份的 YEAR() 函数,等等.如果在使用 DB2 的过程中,需要反复使用同一个功能,就可以把这 ...

  8. 【Flink】Flink Table SQL 用户自定义函数: UDF、UDAF、UDTF

    本文总结Flink Table & SQL中的用户自定义函数: UDF.UDAF.UDTF. UDF: 自定义标量函数(User Defined Scalar Function).一行输入一行 ...

  9. C++:类中的赋值函数

    先来看一个例子: 1 #include<iostream>2 #include<string>3 using namespace std;4 class Student{5 p ...

最新文章

  1. 创建springboot多模块项目
  2. C# - 为引用类型重定义相等性 - 继承相关
  3. 【开发者成长】喧哗的背后:Serverless 的挑战
  4. 由摄像机外参矩阵求解像片的外方位线元素
  5. 95-30-030-java.util-hashMap
  6. Web前端开发培训就业前景好不好?
  7. PHP 代码规范简洁之道
  8. 机器学习实战 利用sklearn库预测科比生涯数据
  9. cad快速选择命令快捷键_CAD快捷键,命令大全
  10. 有效利用PLM系统能为企业带来什么?
  11. Mybaits入门搭建工程(selectOne,selectList,selectMap的用法)
  12. Unified diagnostic services (UDS)
  13. java 基础 String str= “abc god 中国 java“ 反转每个单词 结果: “cba dog 国中
  14. DSP 仿真调试步骤
  15. 男生和女生的十个瞬间 (温馨啊)【转载】
  16. Mac终端自动补全及常用命令
  17. yolo 算法中的IOU算法程序与原理解读
  18. 问题—抱怨?人品差?别搞笑了!
  19. 【转】史上最全Android 开发和安全系列工具
  20. Web应用怎样获取Access Token?

热门文章

  1. Windows同时安装Python2和Python3
  2. php笔记之echo/print比较
  3. sql 数组_sql注入中级
  4. python3反爬虫原理与绕过实战 网盘_Python 3反爬虫原理与绕过实战
  5. Springboot-data-jpa
  6. ImportError: cannot import name 'is_string_like'
  7. CNN结构:用于检测的CNN结构进化-一站式方法
  8. AI:**消灭程序员需要一百年吗?
  9. php memcache可存,php使用memcache共享存储session(二)
  10. ubuntu 系统分配固定 ip--