文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Hive中自定义UDAF函数实现统计区域产品用户访问排名

2023-06-03 01:53

关注

这篇文章主要介绍如何使用Hive中自定义UDAF函数实现统计区域产品用户访问排名,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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最终聚集结果的时候就会调用该方法。计算函数需要把状态作为一个值返回给用户。

mapreduce阶段调用函数 
MAP 

init() 
iterate() 
terminatePartial()

Combiner 

merge() 
terminatePartial()

REDUCE 

init() 
merge() 
terminate()

一、自定义UDAF函数

点击(此处)折叠或打开

此处)折叠或打开

  1. DROP TEMPORARY FUNCTION user_click;

  2. add jar /data/hive_udf-1.0.jar;

  3. CREATE TEMPORARY FUNCTION user_click AS 'hive.org.ruozedata.UserClickUDAF';

三、调用自定义UDAF函数处理数据

点击(此处)折叠或打开

  1. insert overwrite directory '/works/tmp1' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  2. select regexp_replace(substring(rs, instr(rs, '=')+1), '}', '') from (

  3.   select explode(split(user_click(pcid, pcname, type),',')) as rs from (

  4.     select * from (

  5.       select '-2' as type, product_id as pcid, product_name as pcname from product_info

  6.       union all

  7.       select '-1' as type, city_id as pcid,area as pcname from city_info

  8.       union all

  9.       select count(1) as type,

  10.              product_id as pcid,

  11.              city_id as pcname

  12.         from user_click

  13.        where action_time='2016-05-05'

  14.       group by product_id,city_id

  15.     ) a

  16.   order by type) b

  17. ) c

四、创建Hive临时外部表

点击(此处)折叠或打开

  1. create external table tmp1(

  2. city_name string,

  3. product_name string,

  4. rn string

  5. )

  6. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  7. location '/works/tmp1';

五、-统计最终区域前3产品排名

点击(此处)折叠或打开

  1. select * from (

  2. select city_name,

  3.        product_name,

  4.        floor(sum(rn)) visit_num,

  5.        row_number()over(partition by city_name order by sum(rn) desc) rn,

  6.        '2016-05-05' action_time

  7.   from tmp1

  8.  group by city_name,product_name

  9. ) a where rn <=3

六、统计结果
如何使用Hive中自定义UDAF函数实现统计区域产品用户访问排名

以上是“如何使用Hive中自定义UDAF函数实现统计区域产品用户访问排名”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯