- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
普开数据大数据培训牡课程讲解:HIVE执行过程
普开数据大数据培训课程讲解:HIVE执行
过程
•Hive的执行过程
1
•Antlr 简介
2
•Hive Sql的解析过程
3
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 : 调用AddResourceProcessor ,导入外部的资源,
只对该进程有效
delete: 与add对应,删除资源
其他 :提交给Driver类,进行下一步的处理
5. 命令的处理( Driver类的run方法)
编译 complie (Hive的核心部分)
通过语言识别工具Antlr ,验证语句的合法性
将sql转换成一个抽象语法树(AST)
定义树解释器Operator,将AST翻译成逻辑操作树
调用genMapRed方法,生成物理执行计划
获取读写锁
对操作的表获取一个读写锁acquireReadWriteLocks
执行 execute
将生成的Task提交hadoop API 处理
返回任务的执行时间和状态(成功 失败)
6. 获取执行的结果
任务执行失败,抛出异常
执行成功后,调用Driver的GetReuslt方法,顺序打开每
一个输出文件
获取每一行的输出,并打印到控制台
7. 执行清理
清理hive执行过程中的中间文件和临时文件
退出该条命令的执行,返回控制台并等待下一条命令的
输入
4. run(cmd)的执行过程
Complie :
Execute:
•Hive的执行过程
1
•Antlr 简介
2
•Hive Sql的解析过程
3
Antlr(ANother Tool for Language Recognition)
又一个语言识别工具
Antlr提供了一种语言工具框架
定义标示符,关键字(词法分析)
定义表达式(语法分析)
可以将文本转换成抽象语法树(AST)
树的解析(树分析器)
词法分析识别的是字符流
通过词法规则,依次读入字符,并转换成记号(Token)
例如,s e l e c tselect 关键字的过程就是一个词
法分析的过程
词法分析过程是一个ASCII分类整理的过程,哪些地方可
以跳过(空格、换行、注释) ,哪些记号属于标识符,哪些
记号属于字符串、整数、浮点数等。
词法部分的定义以大写字母开头
常见的词法定义
INT:(‘0’..’9’)+ //定义一个正整数
FLOAT:INT(’.’INT) //定义一个浮点数
CHAR : (‘A’..‘Z’ | ‘a’..‘z’) //定义一个字符
Str
文档评论(0)