0
点赞
收藏
分享

微信扫一扫

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析


大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析




HiveLexer.g   hiveParser.g自动代码生成了HiveParser.class 文件,这个反人类的代码自动生成了5万多行,改元代码的话新人不要去改HiveParser.class 文件,要去修改 hiveParser.g文件,类似android的机制。


如果想增加新的语法,请修改HiveParser.g文件
如果想引入新的关键字,修改 HiveLexer.g




SemanticAnalyzer是目前为止最重要的类,包含了语义分析和绝大多数的优化 。是手写的,10000多行。修改的话,改这个类。这个类必须看的。类似spark sql 








ParseDriver pd = new ParseDriver();
 
       ASTNode tree = pd.parse(command, ctx); 
 


 

    /**
 
    * Parses a command, optionally assigning the parser's token stream to the
 
    * given context.
 
    *
 
    * @param command
 
    *          command to parse
 
    *
 
    * @param ctx
 
    *          context with which to associate this parser's token stream, or
 
    *          null if either no context is available or the context already has
 
    *          an existing stream
 
    *
 
    * @return parsed AST
 
    */
 
   public ASTNode parse(String command, Context ctx, boolean setTokenRewriteStream)
  


 

  HiveLexerX lexer = new HiveLexerX(new ANTLRNoCaseStringStream(command));
 
     TokenRewriteStream tokens = new TokenRewriteStream(lexer); 
 

 

  public class SemanticAnalyzer extends BaseSemanticAnalyzer {
 

   public static final String DUMMY_DATABASE = "_dummy_database";
 
   public static final String DUMMY_TABLE = "_dummy_table";
 
   public static final String SUBQUERY_TAG_1 = "-subquery1";
 
   public static final String SUBQUERY_TAG_2 = "-subquery2";

 深度优先遍历和广度优先遍历? 



大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_Hive

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_Hive_02

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_Hive_03

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_Hive_04

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_hive_05

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_Hive_06

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_hive_07

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_语法分析_08

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_Hive_09

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_Hive_10

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_Hive_11

大数据Spark “蘑菇云”行动第104课:Hive源码大师之路第二步:Hive真正的入口、词法分析和语法分析_语法分析_12






举报

相关推荐

0 条评论