前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工作常用之Spark调优一】

工作常用之Spark调优一】

作者头像
Maynor
发布2022-09-27 20:36:13
4290
发布2022-09-27 20:36:13
举报

1 Explain 查看执行计划

Spark 3.0 大版本发布, Spark SQL 的优化占比将近 50% 。 Spark SQL 取代 Spark Core ,成

为新一代的引擎内核,所有其他子框架如 Mllib 、 Streaming 和 Graph ,都可以共享 Spark

SQL 的性能优化,都能从 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 执行计划处理流程

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

这些操作和计划都是 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 运行

代码语言:javascript
复制
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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档