美文网首页Hadoop大数据
Hive的UDF、UDAF、UDTF定义及UDF Demo

Hive的UDF、UDAF、UDTF定义及UDF Demo

作者: 香山上的麻雀 | 来源:发表于2019-04-27 21:32 被阅读35次

1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。
2)当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。
3)根据用户自定义函数类别分为以下三种:
(1)UDF(User-Defined-Function)
一进一出
(2)UDAF(User-Defined Aggregation Function)
聚集函数,多进一出
类似于:count/max/min
(3)UDTF(User-Defined Table-Generating Functions)
一进多出
如lateral view explore()
4)官方文档地址
https://cwiki.apache.org/confluence/display/Hive/HivePlugins
5)编程步骤:

  • 继承org.apache.hadoop.hive.ql.UDF
  • 需要实现evaluate函数;evaluate函数支持重载
  • 在hive的命令行窗口创建函数
    (1)添加jar
    add jar linux_jar_path
    (2)创建function
    create [temporary] function [dbname.]function_name AS class_name;
  • 在hive的命令行窗口删除函数
    drop [temporary] function [if exists] [dbname.]function_name;
  • 注意:UDF必须要有返回类型,可以返回null,但是返回值类型不能为void;
自定义UDF函数实操

1.创建Maven工程Hive

<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>

2.创建一个类

package com.ketang.hive;
import org.apache.hadoop.hive.ql.exec.UDF;
public class Lower extends UDF {
 public String evaluate (final String s) {
 if (s == null) {
     return null;
 }
 return s.toLowerCase();
 }
}

3.打成jar包上传到服务器/opt/module/jars/udf.jar
4.将jar包添加到hive的classpath

hive(default)>add jar /opt/module/datas/udf.jar

5.创建临时函数与开发好的java class 关联

hive(default)>create temporary function mylower as "com.ketang.hive.lower";

6.在HQL中使用自定义函数

hive(default)>select ename,mylower(ename) lowerName from emp;

相关文章

  • Hive 用户自定义函数 UDF,UDAF

    Hive有UDF:(普通)UDF,用户自定义聚合函数(UDAF)以及用户自定义生表函数(UDTF)。它们所接受的输...

  • Hive的UDF、UDAF、UDTF定义及UDF Demo

    1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。2)当H...

  • Hive函数

    自定义函数 自定义函数包括三种:UDF、UDAF、UDTF。 UDF(User-Defined-Function)...

  • 【Hive】注册UDF的过程

    实现步骤 对比SparkSQL注册UDF的过程SparkSQL用户自定义函数UDF和UDAF、UDTF[https...

  • Hive UDF、UDAF、UDTF

    [参考link][参考link][参考link][参考link][参考link] -1- hive UDF(Use...

  • 大数据面试题搜集--持续更新

    #Hadoop HIVEUDF UDTF UDAF UDF:单行进入,单行输出UDAF:多行进入,单行输出UDTF...

  • Oppo面经

    Oppo面经 udf和udtf,udaf的区别,常见sql方法UDF:用户定义(普通)函数,只对单行数值产生作用U...

  • 案例解析丨 Spark Hive 自定义函数应用

    摘要:Spark目前支持UDF,UDTF,UDAF三种类型的自定义函数。 1. 简介 Spark目前支持UDF,U...

  • HIVE-udf&udaf&udtf

    UDF 输入一行数据输出一行数据。 1.解决问题描述 想要比较两个逗号分隔的字符串是否相同。 2.使用方法 如果i...

  • Hive自定义UDF UDAF UDTF

    hive允许用户使用自定义函数解决hive 自带函数无法处理的逻辑。hive自定义函数只在当前线程内临时有效,可以...

网友评论

    本文标题:Hive的UDF、UDAF、UDTF定义及UDF Demo

    本文链接:https://www.haomeiwen.com/subject/boslnqtx.html