hive总结回顾

UDAF

继承UDAF

内部定义一个静态类,实现UDAFEvaluator接口

实现init,iterate,terminatePartial,merge,terminate五个方法

编写代码完成后install打包

Rz -bye 上传到本地

Hdfs dfs -put -f **** * /**/**

上传到hdfs

Add jar hdfs:// jar包所在路径

Create temporary function 函数名称 as ‘主类路径’

Hive sql中调用udaf函数

注意 缓存问题,可先退出再重新执行或更改jar包名称

UDTF

解决一行输入多行输出,即1:n,即行转列应用

往往被lateral view explode+udf等替代实现,比直接用udtf会更简单、直接、更灵活一些

关于MapJoin的问题剖析

概念说明

将join的本来应该是reduce进行关联查找的过程,改成由纯map端进行关联查找。

特点特征

减少了reduce的处理,全部放到map端进行操作。

减少了数据移动,提升了IO和计算效率。

应用场景

大表join小表的时候,

大数据块join小数据块的时候。

代码实现

在hive当中已经默认开启了该功能。

关于数据倾斜的问题剖析

概念说明

在大数据处理环境下,数据处理过程出现明显的倾斜现象,导致任务整体迟迟不能完全结束。

特点特征

在作业或是任务在分布式执行时,经常出现大部分Task任务很快结速,而很少一部分Task,往往是1个或是1-2个一直卡在99%的情况下。

典型的木桶原理,任务的执行完成时间,取决于最后一个Task的完成时间。

应用场景

假倾斜场景

实际数据并没有倾斜,而是由于人为代码原因导致的倾斜。

比如:

数据格式设置不对,导致没有发挥分布式处理的优势

:比如说设置成gzip,snappy。

SQL编写不合理-计算用户uv数

如:select count(distinct uid) from user;

改成:

select count(1) from (select 1 from user group by uid) temp;

代码优化就可以了

真倾斜场景

即数据或是任务本身真的存在客观的倾斜性

比如:VIP会员数据的倒卖倒买问题,导致极少数VIP帐号对应的数据量极多,而正常帐号较少。

解决方法:只能分而治之,将倾斜的数据分类,将正常数据分类,然后进行分别计算。

比如:硬件机器本身配置不均衡导致的计算能力倾斜问题。

解决方法:

第1种是硬性解决即让硬件更加均衡。

第2种是通过NodeLabel方式。

代码实现

参考如上的解决方法即可。

关于二次排序的问题剖析

概念说明

在map到reduce的处理过程当中,按照2个字段进行升序排列,而不是像默认的一次排序那样,只按照key一个字段排序。

特点特征

2个字段排序,第1个字段若有比较结果则按第1个字段排序,若相等,则按第2个字段升序排列。

应用场景

当单个字段不能够满足排序要求时,均可使用二次排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值