本篇总结Hive的函数、数据压缩和数据存储格式 以及 Hive调优等。
Hive函数
内置函数
内容较多,见《Hive官方文档》。
查看系统自带的函数
1
show functions;
显示自带的函数的用法
1
desc function upper;
详细显示自带的函数的用法
1
desc function extended upper;
常用内置函数
1 | 字符串连接函数: concat |
自定义函数
概述
- Hive 自带了一些函数,比如:max/min等,当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF).
- 根据用户自定义函数类别分为以下三种:
- UDF(User-Defined-Function)
- 一进一出
- UDAF(User-Defined Aggregation Function)
- 聚集函数,多进一出
- 类似于:
count
/max
/min
- UDTF(User-Defined Table-Generating Functions)
- 一进多出
- 如
lateral
view
explore()
- UDF(User-Defined-Function)
- 编程步骤:
- 继承org.apache.hadoop.hive.ql.UDF
- 需要实现evaluate函数;evaluate函数支持重载;
- 注意事项
- UDF必须要有返回类型,可以返回null,但是返回类型不能为void;
- UDF中常用Text/LongWritable等类型,不推荐使用java类型;
UDF 开发实例
需求,建立的自己的my_upper方法,将输入的字符串第一个字符大写。
1、创建maven工程
其中的pom.xml文件如下:
1 | <dependencies> |
注意:这一步踩了坑,hive-exec坐标引用后爆红(org\pentaho\pentaho-aggdesigner-algorithm\5.1.5-jhyde.jar有红线),解决方法:
进入https://mvnrepository.com/artifact/org.pentaho/pentaho-aggdesigner-algorithm/5.1.5-jhyde下载相应jar包
放入本地maven仓库中(我的目录为D:\Server\Tools\maven_repository\org\pentaho\pentaho-aggdesigner-algorithm\5.1.5-jhyde)
重启IDEA,并在pom.xml中导入以下依赖
1
2
3
4
5<dependency>
<groupId>org.pentaho</groupId>
<artifactId>pentaho-aggdesigner-algorithm</artifactId>
<version>5.1.5-jhyde</version>
</dependency>完成。
2、编写程序代码
开发 Java 类集成 UDF
1 | public class MyUDF extends UDF{ |
3、项目打包
利用maven 的package命令打成jar包,并上传到集群(bigdata3)的hive的lib目录下。
4、添加jar包到hive中
重命名我们的jar包名称
1 | cd /export/servers/apache-hive-2.7.5-bin/lib |
hive的客户端添加我们的jar包
1 | add jar /export/servers/apache-hive-2.7.5-bin/lib/my_upper.jar; |
5、设置函数与我们的自定义函数关联
1 | hive> create temporary function my_upper as 'udf.MyUDF'; |
6、使用自定义函数
1 | select my_upper('hello world!'); |