四 、Hive逻辑优化

Hive通过逻辑优化提高执行效率,包括谓词下推和常量折叠等策略。谓词下推将过滤条件提前减少处理量,常量折叠涉及表达式计算、逻辑短路和常量传递。例如,Hive会尝试将过滤条件推送到JOIN操作之前,减少数据处理,并对表达式进行常量计算,优化布尔运算和传递常量,以提高查询性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hive生成逻辑算之后,会对逻辑算子进行优化。优化的目的是为了减少不必要的数据处理、消除冗余运算,以到达提高执行效率的目的,这个过程称为逻辑优化。

4.1 逻辑优化类型

Hive逻辑优化包括以下几点:

1) 谓词下推

谓词下推指的是将外层HiveQL的过滤表达式提前到内层HiveQL,以达到提前过滤,减少数据的处理量。如语句:selecta.* , b.* from a join b on a.id=b.id where a.num>10 and b.num>20过滤条件a.num>10 和b.num>20可以提前到join操作之前进行,提前对a,b进行过滤,这样可以减少join时表的大小。

2) 常量折叠

常量折叠包含三个内容:

(1)折叠表达式。如果表达式全是常量,计算出来该表达式的值并替代原表达式。

(2)逻辑短路。如果布尔表达式包含常量并且可根据常量进行短路操作,则进行短路运算。如2>1and a.id>b.id可直接计算出结果为true.

(3) 表达式常量传递。如a=1 ,b=a,常量1可以传递给b.

3)合并RS算子

将算子DAG中同一条路径上的符合特定条件的两个RS算子合并成一个RS算子,这样可以减少shuffle过程,提高执行速度。这两个RS算子位于路径前面的为parent RS(简称pRS),位于路径后面的为childRS(简称cRS)。合并后cRS算子将会被删除,只剩下pRS算子。pRS和cRS能合并必须同时满足以下条件:
   (1) sort key满足包含关系。如pRS sort key为(k1),cRS的sort key为(k1,k2),两组sortkey满足包含关系,可以合并。由于按照(k1,k2)有序则一定满足按照(k1)有序,因此合并后pRS的sortkey为(k1,k2),cRS将被删除。

  (2) partitionkey满足包含关系。如pRS partition key为(k1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值