hive源码解析(1)之hive执行过程

 


1.入口  /bin/cli.sh

      调用CliDriver类进行初始化过程

Ø   处理 -e, -f,-h等信息,如果是-h,打印提示信息,并退出

Ø   读取hive的配置文件,设置HiveConf

Ø   创建一个控制台,进入交互模式

2.在交互方式下,读取每一个输命令行,直到’;’为止,然后提交给processLine(cmd)方法处理,该方法将输入的流以;分割成多个命令 ,然后交给processCmd(cmd)方法 。

3.ProcessCmd(cmd) 对输入的命令行进行判断,根据命令的第一个记号(Token),分别进入相应的流程

Ø  quit or exit 系统正常退出

Ø !开头的命令行,执行操作系统命令

Ø source 开头的,读取外部文件,并执行文件中的命令

Ø list 列出 jar  file archive

其他命令提交给Commandprocess,进行命令的预处理

4.命令的预处理  CommandProcess

   根据输入命令的第一个记号,分别进行处理

Ø set : 调用SetProcess类,设置hive的环境参数,并保存在该进程的HiveConf中

Ø dfs:   调用DfsProcess类,调用hadoop的shell接口,执行hadoop的相关命令

Ø add:  调用AddR

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Hive SQL的执行过程主要包括以下几个步骤: 1. SQL解析:首先,Hive会对用户输入的SQL进行解析,将其转化为Hive内部的抽象语法树(AST)表示形式。这个过程包括词法分析和语法分析,以及对SQL语句中的各个元素进行校验。 2. 语义分析:在语义分析阶段,Hive会对AST进行进一步的处理,包括语义检查、表和列的解析、权限验证等。同时,Hive还会对查询中的表进行统计信息的收集,以便做出优化决策。 3. 查询优化:Hive会根据收集到的统计信息和查询的特性,进行一系列优化操作,包括选择合适的物理执行计划、重排执行顺序、剪枝无用的列和表等。优化的目标是降低执行成本,提高查询性能。 4. 生成执行计划:在生成执行计划阶段,Hive会根据优化后的查询逻辑,生成对应的物理执行计划。这个执行计划通常以MapReduce或Tez的形式表示,其中包含了一系列的Map和Reduce操作、数据的输入输出路径等。 5. 调度执行执行计划生成后,Hive会将该计划提交给底层的计算引擎(如MapReduce或Tez)进行执行。计算引擎会负责根据执行计划指导任务的并行执行,将数据从输入路径读取到内存中,经过一系列的转换和计算操作后,将结果写回到输出路径。 6. 结果返回:计算引擎执行完毕后,Hive会将计算结果返回给Hive的驱动程序(Driver),然后通过用户界面(UI)将结果展示给用户。 综上所述,Hive SQL的执行过程包括SQL解析、语义分析、查询优化、生成执行计划、调度执行和结果返回等步骤。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Hive SQL的底层编译过程详解](https://blog.csdn.net/helloHbulie/article/details/117283369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值