如何将 Amazon EMR 配置为使用 Python 3.4 或 3.6 运行 PySpark 作业?

上次更新时间:2019 年 5 月 9 日

我的 Amazon EMR 集群实例上安装了 Python 3.4 或 3.6,但 Spark 运行的是 Python 2.7。如何将 Spark 升级到 Python 3.4 或 3.6?

简短描述

在大多数 Amazon EMR 发行版本中,集群实例和系统应用程序默认使用不同的 Python 版本:

  • Amazon EMR 发行版本 4.6.0-5.19.0:集群实例上已安装 Python 3.4。系统默认使用 Python 2.7。
  • Amazon EMR 发行版本 5.20.0 及更高版本:集群实例上已安装 Python 3.6。系统默认使用 Python 2.7。

要升级 PySpark 所用的 Python 版本,请将 spark-env 分类的 PYSPARK_PYTHON 环境变量指向 Python 3.4 或 3.6 的安装目录。

解决方法

在正在运行的集群上

运行以下命令以更改默认 Python 环境:

sudo sed -i -e '$a\export PYSPARK_PYTHON=/usr/bin/python3' /etc/spark/conf/spark-env.sh

运行 pyspark 命令以确认 PySpark 使用的 Python 版本正确无误:

[hadoop@ip-X-X-X-X conf]$ pyspark

输出显示 PySpark 现在使用的是安装在集群实例上的同一 Python 版本。例如:

Python 3.4.8 (default, Apr 25 2018, 23:50:36)

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.3.1
      /_/

Using Python version 3.4.8 (default, Apr 25 2018 23:50:36)
SparkSession available as 'spark'.

Spark 将对下一个 PySpark 作业使用新配置。

在新的集群上

在使用 Amazon EMR 发行版本 4.6.0 或更高版本启动集群时,请添加如下所示的配置对象

[
  {
     "Classification": "spark-env",
     "Configurations": [
       {
         "Classification": "export",
         "Properties": {
            "PYSPARK_PYTHON": "/usr/bin/python3"
          }
       }
    ]
  }
]

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?