【发布时间】:2015-04-17 03:52:26
【问题描述】:
如题,我怎么知道 CentOS 安装了哪个版本的 spark?
当前系统已经安装了cdh5.1.0。
【问题讨论】:
如题,我怎么知道 CentOS 安装了哪个版本的 spark?
当前系统已经安装了cdh5.1.0。
【问题讨论】:
如果您使用 Spark-Shell,它会出现在开头的横幅中。
以编程方式,可以使用SparkContext.version。
【讨论】:
<property object at 0x7f8d2afb2998>
您可以使用 spark-submit 命令:
spark-submit --version
【讨论】:
使用
spark.version
其中spark 变量属于SparkSession 对象
spark-shell开头的控制台日志
[root@bdhost001 ~]$ spark-shell
Setting the default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel).
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.2.0
/_/
spark-shell --version[root@bdhost001 ~]$ spark-shell --version
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.2.0
/_/
Type --help for more information.
spark-submit --version[root@bdhost001 ~]$ spark-submit --version
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.2.0
/_/
Type --help for more information.
【讨论】:
spark2-shell --version 或spark2-submit --version
如果您正在使用 Databricks 并与笔记本交谈,只需运行:
spark.version
【讨论】:
如果您使用的是 pyspark,可以在粗体 Spark 徽标旁边看到正在使用的 spark 版本,如下所示:
manoj@hadoop-host:~$ pyspark
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel).
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 1.6.0
/_/
Using Python version 2.7.6 (default, Jun 22 2015 17:58:13)
SparkContext available as sc, HiveContext available as sqlContext.
>>>
如果要显式获取 spark 版本,可以使用 SparkContext 的 version 方法,如下所示:
>>>
>>> sc.version
u'1.6.0'
>>>
【讨论】:
您使用 spark-shell 或 pyspark 的哪个 shell 命令,它将落在 Spark 徽标上,旁边有一个版本名称。
$ pyspark
$ Python 2.6.6(r266:84292,2015 年 5 月 22 日,08:34:51)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-15)] 在 linux2 上
…………
............
欢迎来到
1.3.0版
【讨论】:
使用下方获取 spark 版本
spark-submit --version
【讨论】:
如果您想以编程方式打印版本,请使用
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local").getOrCreate()
print(spark.sparkContext.version)
【讨论】:
如果您使用的是 Zeppelin 笔记本,您可以运行:
sc.version
要知道你可以运行的 scala 版本:
util.Properties.versionString
【讨论】:
如果您想使用python 脚本以编程方式运行它
你可以使用这个script.py:
from pyspark.context import SparkContext
from pyspark import SQLContext, SparkConf
sc_conf = SparkConf()
sc = SparkContext(conf=sc_conf)
print(sc.version)
使用python script.py 或python3 script.py 运行它
上述脚本也适用于 python shell。
直接在 python 脚本上使用print(sc.version) 将不起作用。如果直接运行会报这个错误:NameError: name 'sc' is not defined。
【讨论】:
sc = SparkContext.getOrCreate(conf=sc_conf)。 不是这样的:sc = SparkContext(conf=sc_conf)!
这里的大部分答案都需要初始化一个 sparksession。这个答案提供了一种从库中静态推断版本的方法。
ammonites@ org.apache.spark.SPARK_VERSION
res4: String = "2.4.5"
【讨论】:
如果像我一样,在 docker 容器中运行 spark 并且对 spark-shell 几乎没有任何手段,可以运行 jupyter notebook,在 jupyter notebook 中构建名为 sc 的 SparkContext 对象,并将版本称为如下代码所示:
docker run -p 8888:8888 jupyter/pyspark-notebook ##in the shell where docker is installed
import pyspark
sc = pyspark.SparkContext('local[*]')
sc.version
【讨论】:
试试这个方法:
import util.Properties.versionString
import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder
.appName("my_app")
.master("local[6]")
.getOrCreate()
println("Spark Version: " + spark.version)
println("Scala Version: " + versionString)
【讨论】:
为了在 shell 上打印 Spark 的版本,请执行以下解决方案。
SPARK_VERSION=$(spark-shell --version &> tmp.data ; grep version tmp.data | head -1 | awk '{print $NF}';rm tmp.data)
echo $SPARK_VERSION
【讨论】:
非交互式方式,我用于 AWS EMR 正确的 PySpark 版本安装:
# pip3 install pyspark==$(spark-submit --version 2>&1| grep -m 1 -Eo "([0-9]{1,}\.)+[0-9]{1,}")
Collecting pyspark==2.4.4
解决方案:
# spark-shell --version 2>&1| grep -m 1 -Eo "([0-9]{1,}\.)+[0-9]{1,}"
2.4.4
解决方案:
# spark-submit --version 2>&1| grep -m 1 -Eo "([0-9]{1,}\.)+[0-9]{1,}"
2.4.4
【讨论】: