一、词义解析

  UDF(User-Defined-Function)                   一进一出

  UDAF(User- Defined Aggregation Funcation)          多进一出 (聚合函数,MR)

  UDTF(User-Defined Table-Generating Functions)          一进多出(生成多行结果)

二、UDF

  1.注意事项

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

    b)需要实现evaluate函。

    c)evaluate函数支持重载。

  2.代码实现

三、UDAF

  1.注意事项

   a) 导入以下两个包:

    mport org.apache.hadoop.hive.ql.exec.UDAF

    org.apache.hadoop.hive.ql.exec.UDAFEvaluator

  b)函数类需要继承UDAF类,内部类Evaluator实UDAFEvaluator接口

  c)Evaluator需要实现 init、iterate、terminatePartial、merge、terminate这几个函数 :

    1)init函数实现接口UDAFEvaluator的init函数。

    2)iterate接收传入的参数,并进行内部的轮转。其返回类型为boolean。

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

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

    5)terminate返回最终的聚集函数结果。

  2.Mode对应的各阶段方法    

(1)PARTIAL1 - Map阶段
iterate()和terminatePartial()
(2)PARTIAL2 - Map合并阶段
merge()和terminatePartial()
(3)FINAL - Reduce阶段
merge()和terminate()
(4)COMPLETE - 无Reduce阶段时执行
iterate()和terminate()

  3.代码实现

  

四、UDTF

  1.注意事项

    a)继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF。

    b)实现initialize, process, close三个方法

  2.用法

    a)直接select中使用:select explode_map(properties) as (col1,col2) from src;

    b)和lateral view一起使用:select src.id, mytable.col1, mytable.col2 from src lateral view explode_map(properties) mytable as col1, col2;

    

HIVE函数的UDF、UDAF、UDTF的更多相关文章

  1. [转]HIVE UDF/UDAF/UDTF的Map Reduce代码框架模板

    FROM : http://hugh-wangp.iteye.com/blog/1472371 自己写代码时候的利用到的模板   UDF步骤: 1.必须继承org.apache.hadoop.hive ...

  2. 【转】HIVE UDF UDAF UDTF 区别 使用

    原博文出自于:http://blog.csdn.net/longzilong216/article/details/23921235(暂时) 感谢! 自己写代码时候的利用到的模板   UDF步骤: 1 ...

  3. 简述UDF/UDAF/UDTF是什么,各自解决问题及应用场景

    UDF User-Defined-Function 自定义函数 .一进一出: 背景 系统内置函数无法解决实际的业务问题,需要开发者自己编写函数实现自身的业务实现诉求. 应用场景非常多,面临的业务不同导 ...

  4. Hive 自定义函数 UDF UDAF UDTF

    1.UDF:用户定义(普通)函数,只对单行数值产生作用: 继承UDF类,添加方法 evaluate() /** * @function 自定义UDF统计最小值 * @author John * */ ...

  5. hive中 udf,udaf,udtf

    1.hive中基本操作: DDL,DML 2.hive中函数 User-Defined Functions : UDF(用户自定义函数,简称JDF函数)UDF: 一进一出  upper  lower ...

  6. Spark 自定义函数(udf,udaf)

    Spark 版本 2.3 文中测试数据(json) {"name":"lillcol", "age":24,"ip":& ...

  7. Hive自定义函数UDF和UDTF

    UDF(user defined functions) 用于处理单行数据,并生成单个数据行. PS: l 一个普通UDF必须继承自“org.apache.hadoop.hive.ql.exec.UDF ...

  8. Hive函数以及自定义函数讲解(UDF)

    Hive函数介绍HQL内嵌函数只有195个函数(包括操作符,使用命令show functions查看),基本能够胜任基本的hive开发,但是当有较为复杂的需求的时候,可能需要进行定制的HQL函数开发. ...

  9. 【Hive五】Hive函数UDF

    Hive函数 系统自带的函数 查看系统自带的函数 查看系统自带的函数 show functions; 显示自带的函数的用法 desc function upper; 详细显示自带的函数的用法 desc ...

随机推荐

  1. 【转】【iOS开发】打开另一个APP(URL Scheme与openURL)

    目标 平常我们做iOS开发,会经常遇到打开其他的APP的功能.本篇文章讲的就是打开别人的APP的一些知识.我们的目标是: 打开别人的APP 让别人打开我们的APP iOS9的适配问题 使用URL Sc ...

  2. 创建JDBCUtils工具类

    JDBCUtils工具类 私有化构造函数,外界无法直接创建对象 提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接 提供公共的,静态的,close方法,用来释放资源 pac ...

  3. node-webkit,nwjs 打包启动启动很慢解决办法

    要开发一个桌面程序,可选择的有nwjs和electron,但是electron不支持xp,客户还是有一部分系统是用xp的,只能用nwjs. 由于程序需要安装很多npm的模块,node_module文件 ...

  4. Python之Pulsar框架使用

    本文内容主要包含Pulsar的介绍和安装.初步使用.应用.常见示例等. 一. 介绍和安装 Pulsar是Python事件驱动并发框架:Pulsar具有高扩展性.高可用性的框架,它能够基于事件驱动的开源 ...

  5. Python3的__new__进行构造类的实例化

    __new__方法 这个方法是用来生成类的实例 class Singleton(object): def __new__(cls,*args, **kwargs): ① if not hasattr( ...

  6. [转]DirectX and .NET[英]

    With the DirectX SDK (June 2010) release and the addition of support for Visual Studio 2010, I’ve be ...

  7. MySQL(四)执行计划

    转载自:Oo若离oO,原文链接 在MySQL中使用explain查询SQL的执行计划 目录 一.什么是执行计划 二.如何分析执行计划 一.什么是执行计划 要对执行计划有个比较好的理解,需要先对MySQ ...

  8. 【VSC】git+github/码云+VSCode

    VSCode中使用git,参见. (零)Git安装 在初次使用时如果本地没有安装git会提示先安装git,然后重启vscode. (一)本地操作项目前提: 1)若本地没有git拉取下来的项目,用git ...

  9. ios开发UI篇—UITextfield

    概述 UITextField在界面中显示可编辑文本区域的对象. 您可以使用文本字段来使用屏幕键盘从用户收集基于文本的输入.键盘可以配置许多不同类型的输入,如纯文本,电子邮件,数字等等.文本字段使用目标 ...

  10. MySQL配置主主及主从备份

    原文:https://www.cnblogs.com/ahaii/p/6307648.html MySQL主从备份配置实例 场景: 1.主服务器192.168.0.225.从服务器192.168.0. ...