Spark版本差异疑问:pyspark与spark2-submit显示版本不一致
嗨,这是个典型的Spark多版本共存场景,我帮你拆解清楚每个问题:
一、两个命令版本差异的原因
这说明你的系统里同时安装了Spark 1.x和Spark 2.x两个独立版本,不同命令对应不同的环境配置:
pyspark命令默认绑定的是Spark 1.6.0的安装路径,所以启动的是旧版本的交互式Spark Shell。spark2-submit是Cloudera发行版里专门为Spark 2.x系列设计的命令(Cloudera习惯给Spark 2.x的工具加2后缀来区分旧版本),对应的就是你看到的2.2.0.cloudera2版本。
二、pyspark实际运行的版本
直接执行pyspark时,运行的就是控制台显示的1.6.0版本。你可以在启动后的pyspark Shell里执行这段代码确认:
print(sc.version) # 输出当前SparkContext的版本号
如果想让pyspark启动Spark 2.x版本,需要先修改环境变量指向Spark 2.x的安装目录,再启动:
export SPARK_HOME=/your/path/to/spark2.2.0.cloudera2 pyspark
三、你日常用
spark2-submit script.py的实际运行版本 这个命令明确调用的是Spark 2.x的提交工具,所以你的Python脚本会运行在Spark 2.2.0.cloudera2版本上。如果想在脚本里验证版本,可以加入这段代码:
from pyspark.sql import SparkSession if __name__ == "__main__": spark = SparkSession.builder.appName("VersionCheck").getOrCreate() print(f"当前Spark版本: {spark.version}") spark.stop()
运行脚本后就能看到实际使用的版本号。
内容的提问来源于stack exchange,提问作者Harish
相关产品推荐
相关产品推荐

