Python 3.4 または 3.6 を使用して PySpark ジョブを実行するように Amazon EMR を設定する方法を教えてください。

最終更新日 : 2019 年 5 月 9 日

Python 3.4 または 3.6 が Amazon EMR クラスターインスタンスにインストールされているのですが、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"
          }
       }
    ]
  }
]

この記事は役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合