工作常用之Spark调优【一】

简介: Spark 3.0 大版本发布, Spark SQL 的优化占比将近 50% 。 Spark SQL 取代 Spark Core ,成为新一代的引擎内核,所有其他子框架如 Mllib 、 Streaming 和 Graph ,都可以共享 SparkSQL 的性能优化,都能从 Spark 社区对于 Spark SQL 的投入中受益。

第 1 章 Explain 查看执行计划


Spark 3.0 大版本发布, Spark SQL 的优化占比将近 50% 。 Spark SQL 取代 Spark Core ,成为新一代的引擎内核,所有其他子框架如 Mllib 、 Streaming 和 Graph ,都可以共享 SparkSQL 的性能优化,都能从 Spark 社区对于 Spark SQL 的投入中受益。要优化 SparkSQL 应用时,一定是要了解 SparkSQL 执行计划的。发现 SQL 执行慢的根本原因,才能知道应该在哪儿进行优化,是调整 SQL 的编写方式、还是用 Hint 、还是调参,而不是把优化方案拿来试一遍。


1.1 准备测试用表和数据


1 、上传 3 个 log 到 hdfs 新建的 sparkdata 路径


2 、 hive 中创建 sparktuning 数据库


3 、执行


spark-submit --master yarn --deploy-mode client --driver-memory 1g --num

executors 3 --executor-cores 2 --executor-memory 4g --class

com.atguigu.sparktuning.utils. InitUtil spark-tuning-1.0-SNAPSHOT-jar

with-dependencies.jar


1.2 基本语法


.explain( mode="xxx" )

从 3.0 开始, explain 方法有一个新的参数 mode ,该参数可以指定执行计划展示格式:

➢ explain(mode="simple") :只展示物理执行计划。

➢ explain(mode="extended") :展示物理执行计划和逻辑执行计划。

➢ explain(mode="codegen") :展示要 Codegen 生成的可执行 Java 代码。

➢ explain(mode="cost") :展示优化后的逻辑执行计划以及相关的统计。

➢ explain(mode="formatted") :以分隔的方式输出,它会输出更易读的物理执行计划,

并展示每个节点的详细信息。


1.3 执行计划处理流程


9beb5596018242d7bd4372b1d67c14f9.png


核心的执行过程一共有 5 个步骤:


6582c105986c4efda0fa1898a43f5c21.png


这些操作和计划都是 Spark SQL 自动处理的,会生成以下计划:


➢ Unresolved 逻辑执行计划: == Parsed Logical Plan ==

Parser 组件检查 SQL 语法上是否有问题,然后生成 Unresolved (未决断)的逻辑计划,不检查表名、不检查列名。


➢ Resolved 逻辑执行计划: == Analyzed Logical Plan ==

通过访问 Spark 中的 Catalog 存储库来解析验证语义、列名、类型、表名等。


➢ 优化后的逻辑执行计划: == Optimized Logical Plan ==

Catalyst 优化器根据各种规则进行优化。


➢ 物理执行计划: == Physical Plan ==


1 ) HashAggregate 运算符表示数据聚合,一般 HashAggregate 是成对出现,第一个HashAggregate 是将执行节点本地的数据进行局部聚合,另一个 HashAggregate 是将各个分区的数据进一步进行聚合计算。


2 ) Exchange 运算符其实就是 shuffle ,表示需要在集群上移动数据。很多时候HashAggregate 会以 Exchange 分隔开来。


3 ) Project 运算符是 SQL 中的投影操作,就是选择列(例如: select name, age …)。


4 ) BroadcastHashJoin 运算符表示通过基于广播方式进行 HashJoin 。


5 ) LocalTableScan 运算符就是全表扫描本地的表。


1.4 案例实操


将提供的代码打成 jar 包,提交到 yarn 运行


spark-submit --master yarn --deploy-mode client --driver-memory 1g --num
executors 3 --executor-cores 2 --executor-memory 4g --class
com.atguigu.sparktuning.explain.ExplainDemo spark-tuning-1.0-SNAPSHOT
jar-with-dependencies.jar


目录
相关文章
|
5月前
|
分布式计算 Java 数据库连接
回答粉丝疑问:Spark为什么调优需要降低过多小任务,降低单条记录的资源开销?
回答粉丝疑问:Spark为什么调优需要降低过多小任务,降低单条记录的资源开销?
54 1
|
5月前
|
分布式计算 资源调度 大数据
大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day30】——Spark数据调优(文末附完整文档)
大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day30】——Spark数据调优(文末附完整文档)
98 0
|
SQL 数据采集 存储
工作经验分享:Spark调优【优化后性能提升1200%】
工作经验分享:Spark调优【优化后性能提升1200%】
972 1
工作经验分享:Spark调优【优化后性能提升1200%】
|
SQL 存储 缓存
工作常用之Spark调优【二】资源调优
使用 kryo 序列化并且使用 rdd 序列化缓存级别。使用 kryo 序列化需要修改 spark 的序列化模式,并且需要进程注册类操作。
187 1
工作常用之Spark调优【二】资源调优
|
SQL 消息中间件 存储
每日积累【Day2】SPARK调优
每日积累【Day2】SPARK调优
每日积累【Day2】SPARK调优
|
分布式计算 Spark
【Spark 调优】Spark 开发调优的十大原则
【Spark 调优】Spark 开发调优的十大原则
200 0
【Spark 调优】Spark 开发调优的十大原则
|
分布式计算 并行计算 大数据
Spark企业级应用开发和调优
1.Spark企业级应用开发和调优 Spark项目编程优化历程记录,主要介绍了Spark企业级别的开发过程中面临的问题和调优方法。包含合理分配分片,避免计算中间结果(大数据量)的collect,合理使用map,优化广播变量等操作,降低网络和磁盘IO,提高计算效率。 2.核心技术优化方法对比 首先如下图(2.1),Spark应用开发在集群(伪分布式)中的记录,每一种不
1750 0
|
3月前
|
机器学习/深度学习 分布式计算 算法
Spark快速大数据分析PDF下载读书分享推荐
《Spark快速大数据分析》适合初学者,聚焦Spark实用技巧,同时深入核心概念。作者团队来自Databricks,书中详述Spark 3.0新特性,结合机器学习展示大数据分析。Spark是大数据分析的首选工具,本书助你驾驭这一利器。[PDF下载链接][1]。 ![Spark Book Cover][2] [1]: https://zhangfeidezhu.com/?p=345 [2]: https://i-blog.csdnimg.cn/direct/6b851489ad1944548602766ea9d62136.png#pic_center
126 1
Spark快速大数据分析PDF下载读书分享推荐
下一篇
无影云桌面