Spark-SQL@图解
2024-12-04 10:42:40 0 举报
spark sql详解
作者其他创作
大纲/内容
API级别的适配
MR
withTypedPlan
RDDD:dataset
jdbc
override def strategies: Seq[Strategy] =BasicOperators
logical
LeafNode
qe = sparkSession.sessionState.executePlan(logicalPlan)
2,where age > 30
hdfs
QueryExecution
DDL
key
executedPlan
源:hivetableHadoopRDDcompute()
HIVE中极其复杂
planner
UnaryNode
SQL
command line interface
ss.enableSuportHive()ss.sql()
临时的Application
spark-sql-Driver
ofRows
sessionState
Spark coreDAGDriver优化:如果上下游的RDD的分区器和分区数一样,那么即便他们之间调用了shuffle算子,也屏蔽这次shuffle
row
toRdd: RDD[InternalRow] = executedPlan.execute()
age>30
回塑 RDD的单向链表
Filter
四类语句
rdd
SparkSessionDataset DataFrame
metastorejvm
DataSource
Projectselect
成本:hive规则:spark
def collectFromPlan(plan: SparkPlan)
RuleExecutor
存储层hdfshbase
DataFrameReader
impalaCcloudera
UDF
4. select ....
db持久化
action: doExecute
def batches: Seq[Batch] = {
withAction
ESdoc
node04
文件
语法解析最终的物理执行
df.createTempView(\"ooxx\")
on hive自主
ss.read().text(path)
sql文本
optimizerColumnPruning:rule
元数据file
collectFromPlan
spark sqlOptimizerDriver想优化shuffle如果数据源是parquet还能减少读取数据的IO
HadoopFsRelation
spark-driver
Filter(expr,qe)logicplan
spark-rddcore
文件格式
kpi
mr 慢!spark
where
转换:Filter
SessionState
执行:byteArrayRdd.collect()
人:写下文本
是否有这张表
SparkSession
spark-shellspark-sqlthriftserver+beeline jdbc
def plan(plan: LogicalPlan)
data metadata
LogicalPlan
优化
回归到RDD
RDD优化
文本
baseRelationToDataFrame
override def batches:
String
dataset
plan
执行、调度引擎
sparkPlan:planner.plan(ReturnAnswer(optimizedPlan)).next()
mrsparktez
hiveserver2
sqlParser
Dataset
dataset->qe
资源层yarn
node03
元数据
shema
catalog
qe.executedPlan
LogicalRelation
impala
node02
DQL
函数创建
回归:stage转Task
InputFormat
data
createQueryExecution
TREE物理的可执行
hive-Driver
hive中最值钱的是metastore
logs
sql其实是个字符串
yarn
工具
loadV1Source
ASTnode
Spark SQL 源码分析
on hive整合
optimizer
HIVE
beeline
optimizedPlan: sparkSession.sessionState.optimizer.execute(withCachedData)
table是虚的location
catalog编目、目录(维护metastore)
TREE优化的
DNNMRM
hiveHQL
new
physicalPlan
BinaryNode
Analyzer
datasetobjectsrc tab a
HQL
onhive
因为spark是一个离线计算框架,shuffle一定会触发磁盘IO 和网络IO又因为:IO是计算机的瓶颈
whatwhyhow
resolveRelation
hive将sql转化成mr程序
antlrtree
analyzed分析
SparkPlanner
.read().text(path)
res
doExecute()
hive onspark
dir
应用层
hdfshbase
Optimizer
DML
shark
NN
SparkOptimizer
关系型
模型模式
case class FilterExec
速度快
spark-sql
ReduceTask
LeafExecNode
kylin
内存空间节省
有没有做过DDL定义的元数据location存储类型数据分割列顺序列的类型
node01
metadata
FilterExec
TREE明文字符串
sql
analyzed:sparkSession.sessionState.analyzer.executeAndCheck(logical)
file
HQL趋向于稳定
DAGScheduler
read/write
spark-sql灵活的小胖子
action: SparkPlan => U
sparkonhive
管理 : hive metastore
datasetencoding编码器序列化的优化unsafe:钨丝计划如果数据在节点间不需要频繁的序列化/反序列化
hivecli
解耦一个语法文件配置文件
提交sql得到df/dsapi得到df/ds
递归+遍历,按shuffle 切割stageshuffle/dep 优化!
【MS】
ES
写死里面的逻辑
3. group by + UDF
object
sql的字符串
lazy val batches: Seq[Batch] = Seq(
case class LogicalRelation(HadoopFsRelation)
select a from ooxx;
optimizedPlan优化
1,from ooxx
table结构化
写SQL的方式
executedPlan: SparkPlan = prepareForExecution(sparkPlan)
sparkcontext
select
MapTask
解释器、编译器
所有的数据/资产
DataSet
数据源
hive server2jdbcthrift
如何变成
QueryPlan
DCL
TREE绑定了元数据
BinaryExecNode
QueryPlanner
CPU算力
lazy
人: sql/ds/df
action
def doExecute(): RDDchild.execute(). 从结果到源的逆推过程.mapPartitionsWithIndexInternal 回归过程拼接RDD,并嵌入算子
NNDNNM
final def execute()
SparkPlan
hadoop-jar class jar inputPath outputPath
mrspark
spark-core
antlr V4
objectDataset
RBO:规则CBO:成本
Driverjvm
词法语法分析Parsertoken
RDD
UnaryExecNode
0 条评论
下一页