지난번에 기본 jupyter 로 까니 pyspark 이 python2 를 물고 실행되고 있었다.
이제 파이썬 제대로 할거라서... 3로 바꿔서 잘 깔아둬야 겠다.
일단 지난번에 설치를 정상적으로 했다면 아래와 같은 명령어를 치면 내 jupyter notebook 에서 실행 가능한 kernel 이 보일것이다.
$ /app/milab_reco>$ jupyter kernelspec list Available kernels: python2 /{{your_python_path}}/lib/python2.7/site-packages/ipykernel/resources pyspark {{your_jupyter_path}}/kernels/pyspark
python3 로 pyspark 을 실행시키는 것은 간단하다. kernel 의 파일만 수정해 주면 되는데 kernel.json 의 내용은 아래와 같다.
kernel.json
{ "display_name": "pyspark3 (Spark 2.1.0)", "language": "python", "argv": [ "{{python 3 path}}/bin/python3", ], "env": { ... "PYSPARK_PYTHON" : "{{python 3 path}}/bin/python3" ... } }
기존의 pyspark 의 kernel 을 ( 해당 내용을 모르시는 분은 http://ggoals.tistory.com/67 참조 ) 위와 같이 수정하거나 kernel 폴더를 하나 더 생성해서 하면 된다.
argv 의 값은 kernel 을 실행시킬때 사용할 python 의 path 값이고 PYSPARK_PYTHON 의 값은 spark-submit 시에 driver 노드와 executor 노드에서 실행시킬 python 의 경로이다.
주의점
driver node 와 executor 노드의 PYSPARK_PYTHON 에 적은 python 의 동일 경로에 python3 가 정상적으로 모두 설치 되어 있어야 한다. 필자의 경우 보통 --master yarn --deploy-mode client 로 해서 실행하는데 이렇게 할 경우 driver node ( 지금 말한 yarn client 모드에서는 jupyter 를 띄운 환경이 driver node 가 된다. )와 executor 노드에 위 path 에 spark 이 깔려 있으면 되고, yarn cluster 모드의 경우 주피터를 실행시키는 곳은 상관없고 spark master 노드 ( = driver 노드 ) 와 executor 노드에 깔려 있으면 된다. :)