在CentOS系统中确认Apache Spark的精确版本是进行开发、部署和故障排查的基础步骤,了解当前运行的Spark版本,不仅能确保应用程序与API的兼容性,还能帮助开发者利用特定版本引入的新功能、性能优化以及关键的安全补丁,本文将详细介绍在CentOS环境下查询Spark版本的几种主流方法,并对不同场景下的最佳实践进行探讨。

使用Spark内置命令(最直接、最推荐)
这是获取Spark版本信息最权威、最快捷的方式,Spark的发行包中自带了能够直接打印版本信息的可执行脚本。
-
使用
spark-submit命令spark-submit是用于提交Spark应用程序的核心脚本,它内置了查询版本的功能,打开终端,执行以下命令:spark-submit --version
执行后,终端会输出详细的版本信息,通常包括:
- Spark版本:
version 3.3.1 - Scala版本:
Scala version 2.12.15 - 构建信息:包括构建时间、Java版本、分支名等。
这种方法适用于Spark的二进制发行包已被正确配置到系统环境变量
PATH中的情况。 - Spark版本:
-
使用
spark-shell或pyspark命令 当你启动交互式Shell时,其启动日志中同样会清晰地显示版本信息。spark-shell
或者对于Python用户:
pyspark
在Shell成功启动后,终端的开头部分会打印出一大段日志,其中就包含了与
spark-submit --version类似的版本详情,这种方法在开发调试时尤为方便,无需额外命令即可顺手确认版本。
探查安装目录与配置文件
如果Spark的命令未被添加到系统PATH中,或者你无法确定当前使用的Spark是哪个安装实例时,可以直接检查其安装目录。
-
定位
SPARK_HOME尝试获取Spark的安装主目录环境变量:echo $SPARK_HOME
如果该变量已正确设置,它会返回Spark的安装路径,
/opt/spark。 -
查看
RELEASE文件 在标准的Spark发行包中,$SPARK_HOME目录下通常包含一个名为RELEASE的文本文件,使用cat命令查看其内容即可直接获取版本号。cat $SPARK_HOME/RELEASE
通常非常简洁,如
Spark 3.3.1 built for Hadoop 3.3.4。 -
检查
jars目录 作为最后的手段,可以检查$SPARK_HOME/jars/目录下的核心JAR包,核心库的文件名中通常包含了版本号,spark-core_2.12-3.3.1.jar,从这个文件名中可以直观地读出版本为3.1。
利用系统包管理器(YUM/RPM)
在某些企业环境中,Spark可能是通过YUM或RPM包的形式进行安装和管理的,对于这种情况,可以使用包管理器命令来查询已安装的软件包版本。

rpm -qa | grep spark
该命令会列出所有已安装且名称中包含“spark”的RPM包及其版本信息,输出可能为 spark-3.3.1-1.el7.x86_64,这种方法非常适合由运维团队统一管理的服务器。
方法对比小编总结
下表对上述几种方法进行了小编总结,以便您根据不同场景选择最合适的方案。
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
spark-submit --version |
Spark已配置PATH,标准安装 | 快速、信息全面、最权威 | 依赖环境变量配置 |
探查SPARK_HOME目录 |
环境变量未配置,多版本共存 | 不依赖PATH,结果可靠 | 需要手动查找目录,步骤稍多 |
包管理器查询 (rpm) |
通过YUM/RPM安装的Spark | 与系统集成度高,便于统一管理 | 仅限通过包管理器安装的版本 |
| 查阅集群管理界面 | Cloudera, HDP等大数据平台 | 图形化界面直观,易于管理 | 依赖特定平台,不适用于原生安装 |
相关问答 (FAQs)
Q: 我已经安装了Spark,但在终端输入 spark-submit --version 却提示 “command not found”,这是为什么?
A: 这个问题的根本原因是系统的PATH环境变量中没有包含Spark可执行文件所在的目录(通常是$SPARK_HOME/bin),解决方法有两种:一是使用命令的绝对路径来执行,如 /opt/spark/bin/spark-submit --version;二是将Spark的bin目录添加到PATH中,可以编辑用户的~/.bashrc或系统的/etc/profile文件,添加以下行:export PATH=$PATH:/your/spark/home/bin,然后执行 source ~/.bashrc 或重新登录使其生效。
Q: Spark版本号如 3.3.1 代表什么含义?
A: Spark遵循“主版本号.次版本号.修订号”的语义化版本控制规范,以 3.1 为例:
- 3 (主版本号): 表示这是一个重大的版本更新,可能包含不兼容的API变更。
- 3 (次版本号): 表示这是一个功能更新,会以向后兼容的方式添加新特性。
- 1 (修订号): 表示这是一个修复版本,主要用于修复上一版本中发现的Bug,通常不引入新功能,理解这个规则有助于评估升级可能带来的影响。