You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让PySpark/Spark兼容Python2与Python3并默认使用Python3.6运行?

如何在本地让PySpark在Python2和Python3之间切换/同时运行?

嘿,我来帮你搞定这个问题——在本地同时折腾多Python版本适配Spark确实是个挺常见的需求,不管是临时切换版本还是默认改成Python3.6,都有简单可行的办法:

一、临时切换版本(单次运行生效,支持同时跑两个版本)

这种方式最灵活,不会改动全局配置,想跑哪个版本就临时指定,甚至可以开两个终端同时运行Python2和Python3的PySpark:

  • 启动Python3.6版PySpark:直接在终端里执行
    PYSPARK_PYTHON=/usr/bin/python3.6 pyspark
    
    (如果你的Python3.6在系统PATH里可以直接用python3.6,不确定路径的话用which python3.6命令就能查到)
  • 提交Spark作业时用Python3.6:
    PYSPARK_PYTHON=/usr/bin/python3.6 spark-submit your_spark_script.py
    
  • 要是想切回Python2.7,只需要把PYSPARK_PYTHON的值换成python2或者你的Python2.7路径就行,比如:
    PYSPARK_PYTHON=python2 pyspark
    

二、永久默认切换到Python3.6

如果想让每次启动PySpark都默认用Python3.6,直接修改Spark的配置文件就行:

  1. 找到Spark的配置目录,一般是$SPARK_HOME/conf(如果没设置SPARK_HOME环境变量,就找你安装Spark的文件夹里的conf子目录)
  2. conf目录下,新建或修改spark-env.sh文件(Windows系统对应的是spark-env.cmd):
    • Linux/macOS:在文件末尾添加一行
      export PYSPARK_PYTHON=/usr/bin/python3.6
      
    • Windows:在spark-env.cmd里添加
      set PYSPARK_PYTHON=C:\your\path\to\python3.6.exe
      
  3. 保存文件后,下次再启动PySpark或者提交作业,就会自动用Python3.6运行了。要是偶尔需要用Python2.7,还是可以用上面的临时方法覆盖这个全局配置。

小提醒

别忘了确认你的Python3.6环境里安装了py4j——PySpark是靠这个库和Java端通信的。可以用下面的命令安装(最好和Spark自带的py4j版本匹配,你可以在$SPARK_HOME/python/lib目录下找到对应的py4j jar包版本):

pip3.6 install py4j==<对应版本号>

内容的提问来源于stack exchange,提问作者Joe Ganser

火山引擎 最新活动