Hive(9)-自定义函数
一. 自定义函数分类
当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数.
根据用户自定义函数类别分为以下三种:
1. UDF(User-Defined-Function) 一进一出
2. UDAF(User-Defined Aggregation Function) 聚集函数,多进一出, 类似于:count/max/min
3. UDTF(User-Defined Table-Generating Functions) 一进多出 如lateral view explore()
二.自定义步骤
官方文档地址: https://cwiki.apache.org/confluence/display/Hive/HivePlugins
1. 继承org.apache.hadoop.hive.ql.UDF
2. 需要实现evaluate函数
evaluate函数支持重载;
3. 在hive的命令行窗口创建函数
1). 添加jar: add jar linux_jar_path
2). 创建function: create [temporary] function [dbname.]function_name AS class_name;
删除: Drop [temporary] function [if exists] [dbname.]function_name;
tips: UDF必须要有返回类型,可以返回null,但是返回类型不能为void;
三. 自定义函数实例
1. 创建Maven工程
2.导入依赖
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
3. 创建自定义类
package com.nty.udf; import org.apache.hadoop.hive.ql.exec.UDF; /**
* author nty
* date time 2018-12-21 19:45
*/
public class Lower extends UDF { //返回str的小写
public String evaluate(String str) {
if( null == str){
return null;
}
return str.toLowerCase();
} }
4. 使用maven打成jar包,并上传至/opt/module/jars目录下
5. 将jar包添加到hive的classpath
add jar /opt/module/datas/udf.jar;
6. 创建[临时]函数与开发好的java class关联
create temporary function ntylower as "com.nty.udf.Lower";
7. 使用
select ename, ntylower(ename) lowername from emp;
Hive(9)-自定义函数的更多相关文章
- Hadoop生态圈-hive编写自定义函数
Hadoop生态圈-hive编写自定义函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Hadoop生态圈-Hive的自定义函数之UDTF(User-Defined Table-Generating Functions)
Hadoop生态圈-Hive的自定义函数之UDTF(User-Defined Table-Generating Functions) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Hadoop生态圈-Hive的自定义函数之UDAF(User-Defined Aggregation Function)
Hadoop生态圈-Hive的自定义函数之UDAF(User-Defined Aggregation Function) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function)
Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- 【Hive】自定义函数
Hive的自定义函数无法满足实际业务的需要,所以为了扩展性,Hive官方提供了自定义函数来实现需要的业务场景. 1.定义 (1)udf(user defined function): 自定义函数,特 ...
- Hive中自定义函数
Hive的自定义的函数的步骤: 1°.自定义UDF extends org.apache.hadoop.hive.ql.exec.UDF 2°.需要实现evaluate函数,evaluate函数支持重 ...
- [Hive_12] Hive 的自定义函数
0. 说明 UDF //user define function //输入单行,输出单行,类似于 format_number(age,'000') UDTF //user define table-g ...
- Hive中如何添加自定义UDF函数以及oozie中使用hive的自定义函数
操作步骤: 1. 修改.hiverc文件 在hive的conf文件夹下面,如果没有.hiverc文件,手工自己创建一个. 参照如下格式添加: add jar /usr/local/hive/exter ...
- 三 Hive 数据处理 自定义函数UDF和Transform
三 Hive 自定义函数UDF和Transform 开篇提示: 快速链接beeline的方式: ./beeline -u jdbc:hive2://hadoop1:10000 -n hadoop 1 ...
随机推荐
- mysql 免安装版文件含义及作用
相信很多同学在首次安装mysql 免安装版时,对其中的文件不解,下面以 5.6.24为例讲解这里个文件代表什么: bin: 存放编译好的工具 data:存放数据库数据的位置(就是我们数据库存放的地方) ...
- 属性锁TimeLock
属性锁TimeLock 这是本人所写的几个类,用于对属性设置值时进行锁定与解锁,适用于高逼格动画当中. 源码: TimeLock.h 与 TimeLock.m // // TimeLock.h // ...
- lua学习笔记之userdata
这一段时间看了<programming in lua>中的第28章,看一遍并不是很难,但是只是朦胧的感觉,雾里看花,水中望月.最终还是决定敲出来自己看看,练练手,结果受益不少,也遇到了一些 ...
- linux:相关命令以及笔记
首先,在linux 或者 unix里没有任何的反馈就叫成功,例如: (1)命令执行成功的样子:返回了登录用户信息 (2)命令执行失败的样子:没有返回任何东西 1.按键出现状况 解决:可以使用ctrl+ ...
- linux下如何用GDB调试c++程序
转:http://blog.csdn.net/wfdtxz/article/details/7368357 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形 ...
- 在windows平台上构建自己的PHP(php5.3+)
这是一篇翻译的文章,原文参见:https://wiki.php.net/internals/windows/stepbystepbuild 顺便提一句,wiki.php.net有很多精彩的内容,想深入 ...
- 为什么要使用base64编码,有哪些情景需求?
Base64编码原理与应用 Java实现BASE64编解码 公钥证书也好,电子邮件数据也好,经常要用到Base64编码,那么为什么要作一下这样的编码呢? 我们知道在计算机中任何数据都是按ascii码存 ...
- SSH2整合需要jar包解释
hibernate3.jar, Hibernate的库,必须使用的jar包 antlr-2.7.6.jar, 语法分析生成器 语言转换工具,hibernate利用它实现HQL到SQL的转换 cglib ...
- Intellij IDEA 修改编辑器背景颜色
对眼睛有益的RGB数值分别是(199,237,204)
- Core Animation Manages Your App’s Content
Core Animation 是对现有图片的操作函数. https://developer.apple.com/library/content/documentation/Cocoa/Conceptu ...