hive sql语句执行原理

本文详细解析了Hive SQL语句的执行过程,包括从解析SQL到转化为MapReduce任务的步骤。重点讨论了select、from、join、group by、distinct、order by等操作在map和reduce阶段的具体实现。此外,还探讨了数据倾斜问题及其优化策略,以及left semi join的作用。通过实例分析了不同类型的join、group by和排序操作的效率和特点。
摘要由CSDN通过智能技术生成

大致理解为:hive会对写好的sql语句进行拆解,按执行顺序拆分成树结构(AST)交给mapreduce处理;

hive对不同DML/DDL关键字有不同的反应,比较敏感的有select、from、join、group by、distinct、insert等;

对查询语句,hive首先会先根据from找到数据源(metastore),然后从查询内部开始找用到的字段及其类型,看语句要求对字段直接处理(加减乘除等)还是聚合处理(sum等),并检查语句是否正确——扫描表、语法分析、语义分析;

找出需要的字段,剩下的就是对字段下的取值进行的操作了

join的过程,因为涉及两个及以上的表,在map阶段会对不同表打上不同标签来区分,打上标签以后其实就可以按一个表来理解;

group by与distinct的过程,类似map端的combiner与reduce端的功能,就是按不同Key展示结果且key不重复;

order by的过程,只在reduce端执行,也就是只需要一个reducer,耗时耗内存,可以用 (distribute

Hive是一个基于Hadoop的数据仓库基础设施,它提供了类似于SQL的查询语言HiveQL来处理大规模的结构化数据。Hive SQL执行原理主要分为以下几个步骤: 1. HiveQL解析和语法分析:Hive接收到用户提交的HiveQL查询语句后,首先会进行语法分析,确保查询语句的正确性和合法性。 2. 查询优化器:在语法分析后,Hive会使用查询优化器对查询进行优化。这个过程包括逻辑优化、物理优化和执行计划生成。优化器会尝试重写查询,选择合适的连接算法和操作顺序,以提高查询性能。 3. 查询计划生成:在优化器阶段完成后,Hive会生成查询的执行计划。执行计划是一个逻辑和物理执行计划的组合,描述了如何从底层存储系统中检索和处理数据。 4. 查询执行:一旦生成了执行计划,Hive将会将其转化为一系列的MapReduce任务或Tez任务,并提交给底层的执行引擎进行执行。每个任务负责处理输入数据的一部分,然后将结果写入临时表或输出目录。 5. 结果返回:当所有的任务完成后,Hive会将最终结果返回给用户。用户可以选择将结果保存到文件系统中或者直接在终端上显示。 需要注意的是,Hive SQL执行过程中会将HiveQL查询转化为一系列的MapReduce任务或Tez任务来执行,这样可以充分利用Hadoop集群的并行计算能力来处理大规模数据。同时,Hive还支持使用索引和分区等技术来提高查询的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值