Hive源码学习总结

参考学习尚硅谷Hive源码篇,自我总结

在这里插入图片描述
在这里插入图片描述

程序入口 — CliDriver

  1. run方法——解析用户参数,包含"-e -f -v -database"等等
  2. executeDriver 方法——识别 hivesql语句的"> “和”;"
  3. processLine方法——解析单行 HQL
  4. processCmd方法——判别四种开头情况 -1-“quit"或者"exit”-2-“source”-3-"!"-4-HQL
  5. processLocalCmd 方法——HQL 执行的核心方法
  6. qp.run(cmd)方法——分别进去未编译(false)和已编译(true)的run方法
  7. runInternal方法—— 1.编译 HQL 语句 (包含解析器、编译器和优化器);2.执行 (执行器)
int ret = new CliDriver().run(args);
//*******************************主类的 run 方法************************************
public int run(String[] args) throws Exception {
   
    //解析用户参数,包含"-e -f -v -database"等等 
    if (!oproc.process_stage2(ss)) {
    return 2;}
    // execute cli driver work 
    try {
   return executeDriver(ss, conf, oproc); }
    //*******************************executeDriver 方法************************************
    private int executeDriver(CliSessionState ss, HiveConf conf, OptionsProcessor oproc){
   
        //读取客户端的输入 HQL 
        while ((line = reader.readLine(curPrompt + "> ")) != null) {
   
            //以按照“;”分割的方式解析 
            if (line.trim().endsWith(";") && !line.trim().endsWith("\\;")) {
    
                line = prefix + line; 
                ret = cli.processLine(line, true);
                //*******************************processLine 方法************************************
                public int processLine(String line, boolean allowInterrupting){
   
                    //解析单行 HQL 
                    ret = processCmd(command);
                    //*******************************processCmd 方法************************************
                     public int processCmd(String cmd){
   
                        //1.如果命令为"quit"或者"exit",则退出 
                        if (cmd_trimmed.toLowerCase(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值