一. 自定义函数分类

当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. mysql主键问题

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_22314145/article/details/80824660 MySQL主键 一. MyS ...

  2. abstract(抽象)修饰符

    abstract(抽象)修饰符,可以修饰类和方法 1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半 ...

  3. eclipse通过maven进行打包并且对hdfs上的文件进行wordcount

    在eclipse中配置自己的maven仓库 1.安装maven(用于管理仓库,jar包的管理) -1.解压maven安装包 -2.把maven添加到环境变量/etc/profile -3.添加mave ...

  4. How to import .sql script

    How to import .sql script 1.Export .sql from pl/sql developer you can reference to other document in ...

  5. CentOS 6 网络yum源配置

    # CentOS-Base.repo## The mirror system uses the connecting IP address of the client and the# update ...

  6. SAP R/3系统的R和3分别代表什么含义,负载均衡的实现原理

    1972年,SAP诞生,推出了RF系统(实时财务会计系统), 后来命名为R1. R指Real time.3既指第三代系统,又代表3层架构. 三层架构分别为下图的Presentation server ...

  7. Maven高级应用--编译全模块包-dist包

    1. 在需要生成dist包的模块级别,新建文件夹xxx-xxxx-dist 2. 进入目录,新建pom.xml,建议copy 3. dependencies节点,把要编译成全局包的应用引入进来 < ...

  8. [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP叠加图

    关于如何移植在android上使用SDL,可以参考[原]零基础学习SDL开发之移植SDL2.0到Android 和 [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 . 在一篇 ...

  9. 使用View填充ViewPager

    ViewPager在app开发中十分常见.今天以一个例子详细解读下ViewPager的基础知识. 一.什么是ViewPager 可以这样理解,ViewPager就相当于一个容器,它的里面可以装view ...

  10. UVa 10003 - Cutting Sticks(区间DP)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...