SparkSQL阿里技术下午茶
Spark性能
一、Catalyst 优化器层面
Analyzer:解析一些SparkSQL不认识的节点、元素等,最终得到解析后的节点、元素
Optimizer:优化,例如谓词下推,列裁剪、常量折叠等
Planner:将逻辑执行计划转换成物理执行计划
CoceGen:物理执行计划的代码优化,表达式
功能
将上层产生的逻辑执行计划经过一些解析和相关规则的优化生成RDD,最终执行在SparkCore上执行SQL语句
处理过程
核心思想:TREE+RULE-----遍历树+模式匹配规则
1、用户通过DateFrameAPI/SQL解析得到一个逻辑执行计划(未解析的逻辑执行计划,里面的一些元素未得到验证其合法性)
2、由Analyzer来自验证得到的逻辑执行计划,例如表和列名等,此时得到解析过了逻辑执行计划
3、Optimizer再将已经解析的逻辑计划上添加一些基于规则的优化,得到一个优化过的执行计划
4、通过Planner将优化过的执行计划转换成物理执行计划
5、通过CoceGen来提升其性能,最终在一个RDD在SparkCore上去执行
二、Project Tungsten CPU和内存层面
具体相关函数
内存使用
寄存器(排序)
三、云上ETL
数据源多
考虑成本和性能权衡方案
存储和计算分离
三、云上ETL
数据源多
考虑成本和性能权衡方案
存储和计算分离
资源动态扩容