三、 Hive 逻辑算子及其生成(中)

本文深入解析了Hive逻辑运算中的TableScan、Select、Filter、ReduceSink等算子的实现原理,涉及数据分发、排序、分组聚合等关键操作,展示了如何在Hive中进行数据处理和优化。
摘要由CSDN通过智能技术生成

3.2 Hive主要算子功能实现

   3.2.1 TS、SEL以及FIL算子的实现

   1、TS算子的实现

   TS算子(TableScanOperator)在逻辑上表示table扫描功能,实际table数据的读取由底层的计算引擎完成。如在Map-Reduce框架中,table数据的读取由Hadoop提供的InputFormat类完成。TS内部实现仅仅将从底层计算引擎输入的数据输出给子节点处理。

   2、SEL算子的实现

   SEL算子(SelectOperator)实现了关系代数中投影运算,从输入的每条表记录中筛选指定的列进行计算。例如:

select a.c1+1 as o1,a.c2*2 as o2 from a

表a数据如下:

          表3-1 table a字段及数据

c1        

c2            

c3       

1                

2              

3                       

4              

5              

6                      

7            

8              

9                          

SEL算子从记录中提取c1,c2字段,然后计算select表达式的值,得到结果如下:

o1                    

o2                 

2                     

4                   

5                           

10                     

8                         

16                            

3、FIL算子的实现

FIL(FilterOperator)实现过滤运算,对应HiveQL的where语句。FIL对输入的记录进行过滤,将不符合where表达式的记录过滤掉,剩下的记录输出给子节点。
   以表3-1的数据为例,给定HiveQL语句:

select a.c1+1 as o1,a.c2*2 as o2 from awhere a.c1%2=1

   该语句生成的算子DAG如下:


TS算子读取表a中的数据,输出给FIL节点,FIL算子将a.c1%2=1的记录输出给SEL算子,其他记录被过滤掉,SEL算子做投影运算,计算a.c1+1和a.c2*2的值,然后输出给FS算子,FS算子将结果输出到临时文件中,最终的计算结果如下:

o1               

o2                   

2                          

4                          

8                           

16                              

可见,a.c1等于4的记录被过滤掉,剩下的记录最终计算输出。

Hive在生成算子DAG时总是将FIL算子放在TS算子的后面,这样做的好处是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值