• Hive内置函数和自定义函数的使用


    一、内置函数的使用

    • 查看当前hive版本支持的所有内置函数 show function;

    • 查看某个函数的使用方法及作用,比如查看upper函数 desc function upper;

    • 查看upper函数更为详细的信息 desc function extended upper;

    • 转换为小写: lower() 查询emp表中员工姓名,员工姓名小写显示 select empno, ename, lower(ename) from emp;

    • 字符串连接: concat() 查询emp表,将员工姓名追加到员工编号后 select empno, ename, concat(empno, ename) from emp;



    二、自定义函数

    UDF分为三种,分别如下

    1. UDF(User-Defined_Function),一进一出(输入一行,输出一行),比如: upper(),lower()等
    2. UDAF(User-Defined Aggregation Funcation),多进一出(输入多行,输出一行),比如: avg(),sum()等.
    3. UDTF(User-Defined Table-Generating Functions),一进多出(输入一行,输出多行),比如: collect_set(), collect_list()等.ABSOLUTE

    使用自定义函数需要引入hive-exec的依赖

    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-exec</artifactId>
        <version>2.3.0</version>
    </dependency>
    
    自定义UDF函数

    UDF编程模型: (1) 继承 org.apache.hadoop.hive.ql.exec.UDF (2) 实现 evaluate() 方法

    实现需求: 自定义UDF函数,给指定的字符串前加上字符串hello 比如: 输入 Tom, 输出 helle:Tom

    自定义函数有4种使用方式,the following:

    • 方式一(临时函数,只能在当前客户端使用) 将我们刚编写完成的代码,打成jar maven下 clean package

      将jar包上传到hive add jar /home/hadoop/libs.hive-1.0-SNAPSHOT.jar;

      创建函数 create temporary function say_hello as 'com.bigdata.hadoop.hive.GenericUDFHello';

      查看创建的函数say_hello show functions;

      查看函数say_hello的详细信息 desc function extended say_hello;

      使用函数 select ename,say_hello(ename) from emp;

    • 方式二(临时函数,只能在当前客户端使用) 在$HIVE_HOME下新建目录auxlib,将jar拷贝到该目录下,重启hadoop cp /home/hadoop/libs/hive-1.0-SNAPSHOT.jar

      创建函数say_hello2 create temporary function say_hello2 as 'com.bigdata.hadoop.hive.GenericUDFHello';

      函数的查看与使用同方式一

    • 方式三(永久函数,创建后可以在任意客户端使用,建议使用) 上传jar到hdfs hadoop fs -put hive-1.0-SNAPSHOT.jar /libs

      创建函数say_hello3 create function say_hello3 as 'com.bigdata.hadoop.hive.GenericUDFHello' using jar 'hdfs://hdpcomprs:9000/libs/hive-1.0-SNAPSHOT.jar';

      注意: 创建完function之后,通过show functions并没有看到我们自定义的函数say_hello3,但是可以使用 使用函数,效果同上

    • 方法四(永久函数,将自定义函数集成到hive源码中) 使用这种方式需要修改hive的源代码,集成到hive源码后,hive启动后就可以使用,不用再向hive中注册函数,相当于一个hive的内置函数。如果公司有自己的大数据框架版本,建议使用这种方式。

  • 相关阅读:
    topcoder srm 681 div1
    topcoder srm 683 div1
    topcoder srm 684 div1
    topcoder srm 715 div1
    topcoder srm 685 div1
    topcoder srm 687 div1
    topcoder srm 688 div1
    topcoder srm 689 div1
    topcoder srm 686 div1
    topcoder srm 690 div1 -3
  • 原文地址:https://www.cnblogs.com/suixingc/p/hive-nei-zhi-han-shu-he-zi-ding-yi-han-shu-de-shi-.html
Copyright © 2020-2023  润新知