一. 自定义函数分类

当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. Thrift学习笔记—IDL基本类型

    thrift 采用IDL(Interface Definition Language)来定义通用的服务接口,并通过生成不同的语言代理实现来达到跨语言.平台的功能.在thrift的IDL中可以定义以下一 ...

  2. oracle客户端plsql安装

    1.确认版本 自己的操作系统版本(32位还是64位),oracle instant client(oracle客户端版本)和plsql版本 我自己的版本是:oracle客户端版本 64位,plsql ...

  3. Can't create new folder in windows7

    First, please use System File Checker tool to troubleshoot(诊断) this issue. If the issue persists, im ...

  4. 在windows上安装nginx并注册

    在windows上安装nginx并注册 一.前言   最近自己也尝试了一下在windows上安装nginx,其实非常的简单,这里算是备忘一下. 二.在windows下面安装   首先需要到nginx的 ...

  5. C++使用BOOST操作文件、目录

    开始使用 在BOOST库出现之前,C++对于文件和目录的操作,大都借助于UNIX提供的底层文件和目录接口,从使用角度来看,这些底层的操作不够友好.BOOST中filesystem库是一种可移植的文件系 ...

  6. Android MVP 简析

    原地址:https://segmentfault.com/a/1190000003927200 在Android中应用MVP模式的原因与方法的简析,写的简单易懂.

  7. Android(java)学习笔记1:多线程的引入

    1. 多线程的引入:

  8. 九.mysql数据库多实例安装mysqld_multi [start,stop,report]

    经常应为系统硬件短缺,导致需要在同一台硬件服务器上面安装多个mysql实例.之前的文章四·安装mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz(基于Centos7源码 ...

  9. mac zsh 快捷定位文件

    brew install zsh vim ~/.zshrc plugins=(git autojump zsh-autosuggestions zsh-syntax-highlighting yarn ...

  10. 从源码看String,StringBuffer,StringBuilder的区别

    前言 看了一篇文章,大概是讲面试中的java基础的,有如题这么个面试题.我又翻了一些文章看了下,然后去看源码.看一下源码大概能更加了解一些. String String类是final的,表示不可被继承 ...