Hive - 之谓词下推解析

Hive - 之谓词下推解析

Hive的谓词下推是在对数据做操作之前,扫描数据进内存的一种优化手段!

那么具体什么时候会自动进行谓词下推呢,或者换一句话说谓词下推的规则是怎样的呢 ?

-- 1  join 【对于join,不管谓词放在on 还是 放在join都会触发谓词下推】
select * from a join b on a.id = b.id and a.name = 'a' and b.name = 'b';  --all pushed 
select * from a join b on a.id = b.id where a.name = 'a'; 				  --all pushed
select * from a join b on a.id = b.id and a.name = 'a' where b.name = 'a';--all pushed
select * from a join b on a.id = b.id where a.name = 'a';

-- 2 left outer join 【where 过滤只能针对主表的过滤条件,on上的只针对辅表的过滤条件】
select * from a left join b on a.id = b.id and a.name = 'a';     -- not pushed 
select * from a left join b on a.id = b.id where a.name = 'a';   -- pushed 
select * from a left join b on a.id = b.id where b.name = 'b';   -- not pushed 
select * from a left join b on a.id = b.id and b.name = 'b';     -- pushed 


--3 right outer join 【where 过滤只能针对主表的过滤条件,on上的只针对辅表的过滤条件】
select * from a right join b on a.id = b.id and a.name = 'a';     -- pushed 
select * from a right join b on a.id = b.id where a.name = 'a';   -- not pushed 
select * from a right join b on a.id = b.id where b.name = 'b';   -- pushed 
select * from a right join b on a.id = b.id and b.name = 'b';     -- not pushed 

--4 full outer join 
--这种情况下无论如何都不会触发谓词下推

--还有一些情况下也不会触发谓词下推
	1、在过滤条件中用到了某些函数
	...
针对Hive性能调优的问题,通过掌握谓词下推、Map端聚合和小文件合并等技术可以有效解决数据倾斜问题,从而提升查询效率和系统性能。 参考资源链接:[Hive性能调优:小文件合并与数据倾斜解决方案](https://wenku.csdn.net/doc/7xsubmop6p?spm=1055.2569.3001.10343) 首先,谓词下推是一种优化技术,它能够在Map阶段提前应用查询中的过滤条件,这样可以减少传输到Reduce阶段的数据量,进而减少内存和网络I/O的消耗。在Hive中实现谓词下推,通常需要优化SQL语句,确保相关的WHERE子句在Map阶段就能被解析和执行。 其次,Map端聚合是指在Map阶段执行部分聚合操作,这不仅减少了传输到Reduce阶段的数据量,还有助于缓解数据倾斜问题。为了启用Map端聚合,需要在Hive的查询语句中使用适当的聚合函数,并且在Hive配置文件中调整mapreduce.job.map当地人端聚合参数。 最后,小文件合并技术可以减少MapReduce处理过程中产生的大量小文件,这些小文件会导致NameNode的内存压力增大,并且降低MapReduce任务的执行效率。在Hive中可以使用Hive合并输入格式来实现小文件合并,通常需要设置相关参数来指定合并策略和阈值。 为了进一步优化,可以考虑对不同类型的查询进行参数调优,例如针对Group By和Join操作的数据倾斜问题,可以通过调整Hive的配置参数如hive.optimize.skewjoin等来进行优化。同时,持续监控查询性能,根据日志文件分析瓶颈,并据此调整Hive和MapReduce的相关配置,是实现性能持续优化的关键。 结合《Hive性能调优:小文件合并与数据倾斜解决方案》这一资料,你可以了解到上述调优技术的具体实现方法和案例分析,帮助你在实际操作中解决性能瓶颈问题,提升Hive的处理能力。 参考资源链接:[Hive性能调优:小文件合并与数据倾斜解决方案](https://wenku.csdn.net/doc/7xsubmop6p?spm=1055.2569.3001.10343)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值