zoukankan      html  css  js  c++  java
  • sparksql解析流程

    1、sparkSql处理核心:Catalyst工作流程(本质:把sql、dataframe相结合,以树tree的形式来存储、优化)

    2、catalyst工作流程

    1)Parser(解析器):SqlParser生成LogicPlan Tree

    主要是先进行词法分析,再进行语法非分析

    词法分析:将输入的sql语句串解析为一个一个的token

    语法分析:在词法分析的基础上,将单词序列组合成各类语法短语,组成各个LogicPlan

    2)Analyser:遍历整个语法树,对树上的每个节点进行数据类型绑定以及函数绑定。

    根据元数据表解析为包含必要列的表,并且相应字段解析为相应的数据类型,相应的计算逻辑解析为对应的函数。

    3)Optimizer:是Catalyst的核心

    基于规则优化实际上对语法树再做一次遍历,模式匹配能够满足特定细节的节点,再进行相应的等价变换

    经典规则:谓词下推、常量累加、和列值裁剪

    4)Physical Planning:物理计划层

    用物理操作算子产生一个或者多个物理计划。然后用cost模型选择一个物理计划。目前基于 cost-based的优化仅仅用于选择join算法。

    对已知的很小的relations,sparksql会选择使用Spark 的提供的点对点的广播功能实现 Broadcast  join。

    3、内存管理 Tungsten 内存管理器-- off-heap

    本质:突破JVM内存管理限制,分配堆外内存。

    JVM:GC带来时间开销,可能出现“假死” 情况

  • 相关阅读:
    agc027D
    agc027E
    agc036D
    牛客挑战赛43 D-数组操作
    CF587F. Duff is Mad
    CF578F. Mirror Box
    CF708D. Incorrect Flow
    agc022D
    2020.12.16 模拟赛x+1
    Mybatis Plus——[Could not set property 'id' of '***' with value]解决方案
  • 原文地址:https://www.cnblogs.com/ssqq5200936/p/12774534.html
Copyright © 2011-2022 走看看