Hive 内置函数和UDF函数

1)内置函数

    hive> show functions;    // 显示所有函数,比官网详细

    hive> desc function substr;    // 查看函数的详细信息

    hive> desc function extended substr;    // 查看函数的更详细信息,包括语法(substr的pos从1开始,<0是从尾开始)


2)UDF函数介绍    User-Defined Functions (UDFs)

    built-in 的函数满足不了我们的业务需求,需要自己开发函数去实现

    2.1 UDF (工作常用)

        one2one    一条数据进来,一条数据出去    如:concat/lower

    2.2 UDAF

        A是聚合,即many2one    如:count/max......(聚合函数)

扫描二维码关注公众号,回复: 1245356 查看本文章

    2.3 UDTF(基本用不到)

        T是table,即one2many    一条数据进来,多条数据出去    如:lateral view explode

    Q:在传统的db2/oracle ==> 云化(Hadoop,即:用大数据处理),怎样实现?

    A:首先要保持sql不变,然后根据该sql再在hive上面实现,这样就得使用UDF函数了。


3)开发UDF

    1. 继承UDF类

    2. 重写evaluate方法

        建议: -- 要有返回值

                  -- 参数类型使用Hadoop的类型(只是建议,用java类型也不会错)

    3. 打成jar包

    4. 添加到hive中 hive> add jar /home/hadoop/lib/hive-1.0.jar;

    5. 创建(临时)函数 hive> create (temporary) function say_hello as 'com.ruozedata.udf.HelloUDF';

    6. 创建持久函数 
        hive> CREATE FUNCTION say_hello2 AS 'com.ruozedata.udf.HelloUDF' 
                   USING JAR 'hdfs://hadoop000:8020/lib/hive-1.0.jar';

    7. 通过hive> list jars; 可以查询到加了哪些jar包进来


4)注意

    自定义UDF,在show functions;命令下可能会没有显示到自定义的持久函数,但可以通过以下方法查询:

        mysql> select * from FUNCS \G;

猜你喜欢

转载自blog.csdn.net/qq_30130043/article/details/80515297