Amazon EMRジョブでPythonのバージョンを指定する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon EMR ジョブを PySpark や Hadoop Streaming などを使い Python で実装するケースがあります。

さて、ここで気になるのは Python のどのバージョンで実行されるのかという点です。

2018/03/16 時点で最新の Amazon EMR 5.12.0(Hadoop : 2.8.3) で確認した結果を共有します。

Amazon EMR 5.12.0 でインストールされている Python

Amazon EMR 5.12.0 では

  • Python 2.6
  • Python 2.7
  • Python 3.4

の3種類の Python がインストールされています

バージョンに対応する Python をどのように呼び出せばよいのかまとめたのが、次の表です。

バージョン 呼び出し方
Python 2.6 python2
python26
python2.6
Python 2.7 python
python27
python2.7
Python 3.4 python3
python34
python3.4

/usr/bin/python は Python 2.7 なのに対して /usr/bin/python2 が Python 2.6 なのは若干はまりポイントです。Python 3 との違いを明示的にするために、気を利かせて pythonpython2 に書き換えたりすると、インタープリターそのものも変わってしまいます。お気をつけ下さい。

なお、Amazon EMR 4.6 以降であれば、 /usr/bin/python3 で Python 3.4 を呼び出し可能です。 

Hadoop Streaming/PySpark などの Python 使いの参考になれば幸いです。

備考

/usr/bin/ 以下のインストールされた Python 系プログラムが以下です

python
python2
python26
python2.6
python27
python2.7
python2.7-config
python3
python34
python3.4

参考

  • https://hadoop.apache.org/docs/r1.2.1/streaming.html
  • https://aws.amazon.com/premiumsupport/knowledge-center/emr-pyspark-python-3x/
  • https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-whatsnew-history.html