hive,spark sql优化

本文探讨了Hive SQL的优化,包括处理数据倾斜的方法,如调整key分布、拆分表、使用bucket表和广播小表。同时,讨论了不同存储格式对性能的影响,建议在查询时尽量选择需要的字段。接着转向Spark SQL,分析了它相对于Hive的优势,如实时性和速度,并提出了基于内存的优化、列簇存储、SQL语句优化和数据分片等建议。
摘要由CSDN通过智能技术生成

一.hive sql优化

1.发生数据倾斜,如何解决?

什么是数据倾斜? 

由于数据分布不均匀,造成数据大量的集中到一点,造成数据热点

1.1 原因
1)、key分布不均匀
2)、业务数据本身的特性
3)、建表时考虑不周
4)、某些SQL语句本身就有数据倾斜
1.2 表现
任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。因为其处理的数据量和其他reduce差异过大。
单一reduce的记录数与平均记录数差异过大,通常可能达到3倍甚至更多。 最长时长远大于平均时长。

1.3 解决方法

1)  打散 分布不均的key 值 ,例如使用  COALESCE(我是key值, concat('!!!',rand()))  或者 对key值进行hash转换

2)  对数据量较大的表进行拆分:分区,增量

终极套路:使用Bucket 桶表,可理解为在分区的基础上再做更细的分区表。

tips:需提前准备好桶表;用于分桶的字段值增长量不能过大

可参考:https://blog.csdn.net/u013850277/article/details/65937122?utm_source=itdadao&utm_medium=referral

3) 将数据量小的表进行 广播机制,hive 里关键字 是 /*+MAPJ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值