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

所要時間2分
0

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 です。5.20.0-5.29.0 では、システムのデフォルトは Python 2.7 です。Amazon EMR バージョン 5.30.0 以降では、システムのデフォルトは Python 3 です。

PySpark が使用する Python バージョンをアップグレードするには、spark-env 分類用の PYSPARK_PYTHON 環境変数を Python 3.4 または 3.6 がインストールされているディレクトリに指定します。

解決方法

実行中のクラスターの場合

Amazon EMR リリースバージョン 5.21.0 以降:

次のような設定オブジェクトを使用して、再設定リクエストを送信します。

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

Amazon EMR リリースバージョン 4.6.0-5.20.x

1.    SSH を使用してマスターノードに接続します。

2.    次のコマンドを実行してデフォルトの Python 環境を変更します。

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

3.    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"
          }
       }
    ]
  }
]

関連情報

Spark の設定

Apache Spark

PySpark ドキュメント

AWS公式
AWS公式更新しました 2年前
コメントはありません