美文网首页
Hive函数

Hive函数

作者: 乔一波一 | 来源:发表于2019-04-02 19:22 被阅读0次

    hive中的函数从大体上可以分为两类:hive内置函数和用户自定义函数

    hive内置函数又可以根据输入输出细分为以下三类:

           (1) 一进一出:

           (2)多进一出(UDAF):如count()

           (3)一进多出(UDTF):如explode(array<>)

    用户自定义函数:也是包括三种UDF,UDAF,UDTF

    (1)UDF:这里自定义一个脱敏函数为例;

    UDF注意点:

            a)自定义UDF需要继承org.apache.hadoop.hive.ql.UDF。

            b)需要实现evaluate函数,evaluate函数支持重载。

           操作步骤

            a)把程序打包放到目标机器上去;

            b)进入hive客户端,添加jar包:hive>add jar /run/jar/udf_test.jar;

            c)创建临时函数:hive>CREATETEMPORARY FUNCTION add_example AS 'hive.udf.Add';

            d)查询HQL语句:

            e)销毁临时函数:hive> DROPTEMPORARY FUNCTION add_example;

    自定义函数代码

    自定义函数

    打jar包,上传到linux节点

    添加jar 包到当前会话

    注册临时函数

    注册临时函数

    使用自定义脱敏函数完成查询

    查询结果

    (2):UDAF:

            注意点:

            1.必须继承

                org.apache.hadoop.hive.ql.exec.UDAF(函数类继承)

                org.apache.hadoop.hive.ql.exec.UDAFEvaluator(内部类Evaluator实现UDAFEvaluator接口)

            2.Evaluator需要实现 init、iterate、terminatePartial、merge、terminate这几个函数

                 init():类似于构造函数,用于UDAF的初始化

                iterate():接收传入的参数,并进行内部的轮转,返回boolean

                terminatePartial():无参数,其为iterate函数轮转结束后,返回轮转数据,类似于hadoop的Combiner

                merge():接收terminatePartial的返回结果,进行数据merge操作,其返回类型为boolean

                terminate():返回最终的聚集函数结果

    相关文章

      网友评论

          本文标题:Hive函数

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