一. 自定义函数分类

当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)-自定义函数的更多相关文章

  1. Hadoop生态圈-hive编写自定义函数

    Hadoop生态圈-hive编写自定义函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  2. Hadoop生态圈-Hive的自定义函数之UDTF(User-Defined Table-Generating Functions)

    Hadoop生态圈-Hive的自定义函数之UDTF(User-Defined Table-Generating Functions) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  3. Hadoop生态圈-Hive的自定义函数之UDAF(User-Defined Aggregation Function)

    Hadoop生态圈-Hive的自定义函数之UDAF(User-Defined Aggregation Function) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  4. Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function)

    Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  5. 【Hive】自定义函数

    Hive的自定义函数无法满足实际业务的需要,所以为了扩展性,Hive官方提供了自定义函数来实现需要的业务场景. 1.定义 (1)udf(user defined function):  自定义函数,特 ...

  6. Hive中自定义函数

    Hive的自定义的函数的步骤: 1°.自定义UDF extends org.apache.hadoop.hive.ql.exec.UDF 2°.需要实现evaluate函数,evaluate函数支持重 ...

  7. [Hive_12] Hive 的自定义函数

    0. 说明 UDF //user define function //输入单行,输出单行,类似于 format_number(age,'000') UDTF //user define table-g ...

  8. Hive中如何添加自定义UDF函数以及oozie中使用hive的自定义函数

    操作步骤: 1. 修改.hiverc文件 在hive的conf文件夹下面,如果没有.hiverc文件,手工自己创建一个. 参照如下格式添加: add jar /usr/local/hive/exter ...

  9. 三 Hive 数据处理 自定义函数UDF和Transform

    三  Hive 自定义函数UDF和Transform 开篇提示: 快速链接beeline的方式: ./beeline -u jdbc:hive2://hadoop1:10000 -n hadoop 1 ...

随机推荐

  1. ubuntu配置(娱乐工作)

    因为目前没有使用ubuntu作为工作的电脑(mac还是好用),所以暂时记录一下别人分享的ubuntu常用软件: 输入法:搜狗输入法 虚拟机:virtualbox 浏览器:chromium ide:id ...

  2. hydra 常用的命令

    1.本地调试模式运行项目  /gaea hydra /zk节点名 -r "zk://zk地址" -t "节点标识" -d -w 项目相对于$GOPATH/src ...

  3. WiFi安全测试工具WiFiPhisher

    官方下载地址:https://github.com/sophron/wifiphisher打不开的要翻GFW好事做到底wifiphisher-master.zip=================== ...

  4. (转)浅谈PostgreSQL的索引

    1. 索引的特性 1.1 加快条件的检索的特性 当表数据量越来越大时查询速度会下降,在表的条件字段上使用索引,快速定位到可能满足条件的记录,不需要遍历所有记录. create table t(id i ...

  5. servlet的使用

    Servlet是比较基础的的客户端与服务器数据交互程序,通过HttpServletRequest请求和HttpServletResponse响应,可以基本实现web程序开发. 1.Servlet基础代 ...

  6. Android(java)学习笔记210:Android线程形态之 IntentService

    1. IntentService原理 IntentService是一种特殊的Service,既然是Service,使用的时候记得在AndroidManifest清单文件中注册. 并且它是一个抽象类,因 ...

  7. 阅读MySQL文档第20章:存储程序和函数

    本文把阅读到的重点摘抄下来. 一.一个子程序要么是一个程序要么是一个函数.使用CALL语句来调用程序,程序只能用输出变量传回值.就像别其它函数调用一样,函数可以被从语句外调用(即通过引用函数名),函数 ...

  8. App上线流程全攻略(史上最具体步骤)

    @转载请保留:iOS界一迷糊小书童--->专注于iOS开发!!谢谢合作 /*****************************************1****************** ...

  9. TCP建立连接和释放连接过程

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议.TCP建立连接需要三次握手,释放连接需要四次握手. 1.TCP整 ...

  10. HDU 3292 【佩尔方程求解 && 矩阵快速幂】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=3292 No more tricks, Mr Nanguo Time Limit: 3000/1000 M ...