pyspark TypeError: namedtuple() missing 3 required keyword-only arguments
$ /usr/local/spark/bin/spark-submit --master local[1] textStream.py Traceback (most recent call last): File "/home/mh/workspace/spark/pyspark-practice/textStream.py", line 1, in <module> from pyspark import SparkContext ------- pyspark TypeError: namedtuple() missing 3 required keyword-only arguments
タイトルのエラーメッセージ、最初の import の部分で躓いていました。
from pyspark import SparkContext
調べてみると、spark 2.1.0 以下のバージョンについては、python 3.6 をサポートしていないらしい。
現在使っている python のバージョンは、3.6.3 で spark のバージョンは 1.6
$ python Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
とりあえず、既に python 2.7.6 もインストール済みだったので python 側のバージョンを下げてみることに。
.bashrc に以下を適用することで、デフォルトのバージョンが変更が変更される。
# default python alias python='/usr/bin/python2.7'
$ python Python 2.7.6 (default, Mar 22 2014, 22:59:56)
よしこれで大丈夫!再実行!!したが、同じエラー。。。
pyspark で使用する python のバージョンは PYSPARK_PYTHON で定義してあげる必要がありました。
export PYSPARK_PYTHON=/usr/bin/python2.7
$ /usr/local/spark/bin/spark-submit --master local[1] textStream.py
これでエラーは表示されなくなりました。