0%
  
    
  
  
  
  
    
    
      
      
      
    
    
      
    
      
    
    
    
    
        
SparkSQL内核剖析读后总结
SparkSQL引擎:Catalyst
| 12
 3
 
 | InternalRow(数据行)TreeNode(执行树)
 AbstractDataType(类型)
 
 | 
编译器
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | ANTLR4文法解析,通过调用SQLBase.g4文件对SQL进行解析生成AST语法树
 
 涉及到的类
 ParserInterface
 AbstractSqlParser->AstBuilder->SqlBaseBaseVisitor
 CatalystSqlParser
 SparkSqlParser->SparkSqlAstBuilder
 
 整体语法树生成使用访问者模式
 SQL各种语法对应以Context结尾
 SingleStatementContext
 QuerySpecificationContext
 NamedExpressionSeqContext(列名)
 FromClauseContext(表名)
 BooleanDefaultContext(where条件)
 AggregationContext(groupby分组)
 QueryOrganizationContext
 SortItemContext(排序)
 
 | 
逻辑计划/物理计划
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 
 | 都继承QueryPlan父类输入输出
 基本属性
 字符串
 规范化
 表达式操作
 约束
 
 LogicalPlan
 UnresolvedLogicalPlan(未解析的逻辑计划)
 AnalyzedLogicalPlan(解析的逻辑计划)
 OptimizerLogicalPlan(优化的逻辑计划)
 LeafNode(关系,内存/Hive/RDD)
 UnaryNode(排序/重分区/数据转换/过滤等)
 BinaryNode(连接/集合/CoGroup)
 
 Analyzed和Optimizer都是去获取对应的规则
 进行生成/解析与优化
 
 经过QueryPlanner实现逻辑计划到物理计划的转变
 SparkStreategies
 SparkPlanner
 
 PhysicalPlan
 LeafExecNode
 UnaryExecNode
 BinaryExecNode
 
 |