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带来时间开销,可能出现“假死” 情况

  • 相关阅读:
    获取配置文件
    windows下多tomcat部署
    tomcat是否有必要配置环境变量(摘)
    js删除map中元素
    HDU-3440 House Man
    HDU-1534 Schedule Problem
    POJ-1364/HDU 1531 King
    POJ-1275/HDU-1529 Cashier Employment
    POJ-1201/HDU-1384 Intervals
    HDU-5780 gcd
  • 原文地址:https://www.cnblogs.com/ssqq5200936/p/12774534.html
Copyright © 2011-2022 走看看