美文网首页
hive udf、udaf、udtf使用区分

hive udf、udaf、udtf使用区分

作者: 白纸糊 | 来源:发表于2019-02-25 10:04 被阅读0次

UDF:一进一出
实现方法:

  1. 继承UDF类
  2. 重写evaluate方法
  3. 将该java文件编译成jar
  4. 在终端输入如下命令:
    hive> add jar test.jar;

hive> create temporary function function_name as 'com.hrj.hive.udf.UDFClass';

hive> select function_name(t.col1) from table t;

hive> drop temporary function function_name;

UDAF:多进一出
实现方法:
1,用户的UDAF必须继承了org.apache.hadoop.hive.ql.exec.UDAF;
2,用户的UDAF必须包含至少一个实现了org.apache.hadoop.hive.ql.exec的静态类,诸如实现了 UDAFEvaluator
3,一个计算函数必须实现的5个方法的具体含义如下:
init():主要是负责初始化计算函数并且重设其内部状态,一般就是重设其内部字段。一般在静态类中定义一个内部字段来存放最终的结果。

iterate():每一次对一个新值进行聚集计算时候都会调用该方法,计算函数会根据聚集计算结果更新内部状态。当输 入值合法或者正确计算了,则 就返回true。

terminatePartial():Hive需要部分聚集结果的时候会调用该方法,必须要返回一个封装了聚集计算当前状态的对象。

merge():Hive进行合并一个部分聚集和另一个部分聚集的时候会调用该方法。

terminate():Hive最终聚集结果的时候就会调用该方法。计算函数需要把状态作为一个值返回给用户。

4.部分聚集结果的数据类型和最终结果的数据类型可以不同。
UDTF:一进多出
实现方法:

  1. 继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF

2.initialize():UDTF首先会调用initialize方法,此方法返回UDTF的返回行的信息(返回个数,类型)

3.process:初始化完成后,会调用process方法,真正的处理过程在process函数中,在process中,每一次forward() 调用产生一行;如果产生多列 可以将多个列的值放在一个数组中,然后将该数组传入到forward()函数
4.最后close()方法调用,对需要清理的方法进行清理


相关文章

  • hive udf、udaf、udtf使用区分

    UDF:一进一出实现方法: 继承UDF类 重写evaluate方法 将该java文件编译成jar 在终端输入如下命...

  • Hive的Transform和UDF

    UDTF Hive中UDTF编写和使用 UDAF Hive udaf开发入门和运行过程详解 Hive通用型自定义聚...

  • Hive UDF、UDAF、UDTF

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

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

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

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

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

  • HIVE-udf&udaf&udtf

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

  • Hive函数

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

  • 【Hive】注册UDF的过程

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

  • hive之UDF . UDAF . UDTF区别

    1. UDF 针对一行做处理 , 比如求一列的STRING 全部 小写 lowwer可以用这个 ,每一行处理一次 ...

  • Oppo面经

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

网友评论

      本文标题:hive udf、udaf、udtf使用区分

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