本文将介绍如何在不依赖 Pyspark 的情况下,准确获取 Spark Core 的版本信息。针对在 yarn 集群上运行 Spark 的场景,提供了一种简单有效的方法,即通过 Spark sql 的 version() 函数,直接查询 Spark Core的版本号,并附带 Java 和 python 的代码示例,方便读者快速上手实践。
在 Spark 环境中,有时需要确定 Spark Core 的版本,尤其是在 PySpark 版本与集群中安装的 Spark Core 版本不一致的情况下。虽然可以通过 pyspark.__version__、ss.version、sc.version 或 ./bin/spark-submit –version 获取 PySpark 的版本,但这些方法并不能直接提供 Spark Core 的版本信息。
从 Spark 3.0 开始,Spark SQL 提供了一个内置函数 version(),可以直接查询 Spark Core 的版本。以下分别介绍 Java 和 Python 中的使用方法。
Java 示例
以下 Java 代码展示了如何使用 version() 函数获取 Spark Core 的版本:
import org.apache.spark.sql.SparkSession; public class SparkVersion { public static void main(String[] args) { SparkSession spark = SparkSession.builder() .config("spark.master", "local[*]") .getOrCreate(); spark.sql("select version()").show(); spark.close(); } }
这段代码首先创建一个 SparkSession 对象,然后执行 SQL 查询 select version(),最后将结果打印到控制台。 输出结果类似如下:
+--------------------+ | version()| +--------------------+ |3.3.2 5103e00c4ce...| +--------------------+
Python 示例
对于 Spark 3.5 及更高版本,Python API 也支持 version() 函数。以下是 Python 示例代码:
from pyspark.sql.functions import version from pyspark.sql import SparkSession spark = SparkSession.builder.appName("SparkVersion").getOrCreate() df = spark.range(1) df.select(version()).show(truncate=False) spark.stop()
这段代码首先创建一个 SparkSession 对象,然后创建一个包含单个元素的 DataFrame,并使用 version() 函数查询 Spark Core 的版本,最后将结果打印到控制台。输出结果类似如下:
+----------------------------------------------+ |version() | +----------------------------------------------+ |3.5.0 cafbea5b13623276517a9d716f75745eff91f616| +----------------------------------------------+
注意事项
- 确保你的 Spark 版本在 3.0 及以上,Python API 的支持则需要 3.5 及以上。
- version() 函数返回的字符串包含 Spark 的版本号以及构建信息。
总结
通过 Spark SQL 的 version() 函数,可以方便快捷地获取 Spark Core 的版本信息,避免了依赖 PySpark 版本带来的不确定性。无论是在 Java 还是 Python 环境中,都可以轻松使用该函数,从而更好地管理和维护 Spark 集群。
评论(已关闭)
评论已关闭