Spark UI如何高效地定位性能问题(上)

Spark UI如何高效地定位性能问题(上)

前面我们介绍了基础知识和 Spark SQL 这两个模块的学习,这也就意味着,我们完成了 Spark 入门“三步走”中的前两步,首先恭喜你!在学习的过程中,我们逐渐意识到,Spark Core 与 Spark SQL 作为 Spark 并驾齐驱的执行引擎与优化引擎,承载着所有类型的计算负载,如批处理、流计算、数据分析、机器学习,等等。

Spark Core 与 Spark SQL 运行得是否稳定与高效,决定着 Spark 作业或是应用的整体“健康状况”。不过,在日常的开发工作中,我们总会遇到 Spark 应用运行失败、或是执行效率未达预期的情况。对于这类问题,想找到根本原因(Root Cause),我们往往需要依赖 Spark UI 来获取最直接、最直观的线索。

如果我们把失败的、或是执行低效的 Spark 应用看作是“病人”的话,那么 Spark UI 中关于应用的众多度量指标(Metrics),就是这个病人的“体检报告”。结合多样的 Metrics,身为“大夫”的开发者即可结合经验来迅速地定位“病灶”。

这里需要说明的是,Spark UI 的讲解涉及到大量的图解、代码与指标释义,内容庞杂。因此,为了减轻你的学习负担,我按照 Spark UI 的入口类型(一级入口、二级入口)把 Spark UI 拆成了上、下两讲。一级入口比较简单、直接,我们今天这一讲,先来讲解这一部分,二级入口的讲解留到下一讲去展开。

准备工作

在正式开始介绍 Spark UI 之前,我们先来简单交代一下图解案例用到的环境、配置与代码。你可以参考这里给出的细节,去复现“倍率与中签率分析”案例 Spark UI 中的每一个界面,然后再结合今天的讲解,以“看得见、摸得着”的方式,去更加直观、深入地熟悉每一个页面与度量指标。

当然,如果你手头一时没有合适的执行环境,也不要紧。咱们这一讲的特点,就是图多,后面我特意准备了大量的图片和表格,带你彻底了解 Spark UI。由于小汽车摇号数据体量不大,因此在计算资源方面,我们的要求并不高,“倍率与中签率分析”案例用到的资源如下所示:

image-20240801104309646

import org.apache.spark.sql.DataFrame
 
val rootPath: String = _
// 申请者数据
val hdfs_path_apply: String = s"${rootPath}/apply"
// spark是spark-shell中默认的SparkSession实例
// 通过read API读取源文件
val applyNumbersDF: DataFrame = spark.read.parquet(hdfs_path_apply)
 
// 中签者数据
val hdfs_path_lucky: String = s"${rootPath}/lucky"
// 通过read API读取源文件
val luckyDogsDF: DataFrame = spark.read.parquet(hdfs_path_lucky)
 
// 过滤2016年以后的中签数据,且仅抽取中签号码
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值