데이터 분석을 위한 작업 환경을 개선하려고 주피터 노트북에 PySpark 를 연동한 작업을 기록합니다.
사전 작업
- spark 설치 및 pyspark shell 테스트
- ipython 설치 및 jupyter notebook 실행 테스트
참고 자료
- Jupyter(IPython) 에서 pyspark 사용하기
- Pyspark Shell과 Jupyter notebook 연동하기
- How to install PySpark and Jupyter Notebook in 3 Minutes
- Jupyter Notebook 실행시 토큰을 입력하라고 나옵니다
작업 순서
- ipython profile 생성
- ipython_config.py 수정
- ipython password 생성 및 설정
- jupyter notebook 테스트
- ipykernel 설치 및 환경 생성
- kernel.json 수정
- jupyter notebook 테스트 (spark 연동)
- alias 등록
ipython profile 설정 (1~4단계)
ipython profile 생성
1
2
3
$ ipython profile create pyspark
# ~/.ipython/ 밑에 profile 생성됨
ipython_config.py 수정
1
2
3
4
5
6
7
8
9
10
11
$ vi ~/.ipython/profile_pyspark/ipython_config.py
# 추가
#
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 29292
c.NotebookApp.notebook_dir = '/Users/bgmin/Workspaces/notebook'
# 패스워드 암호화 값은 다음 절 내용 참조
c.NotebookApp.password = 'sha1:**************************'
ipython password 생성 및 설정
패스워드 설정이 없으면 ipython 실행시마다 Token 과 암호를 묻게된다.
1
2
3
4
5
6
7
8
9
10
$ ipython
In [1]: from IPython.lib import passwd
In [2]: passwd()
Enter password: # 패스워드
Verify password: # 재입력
Out[2]: 'sha1:****************************'
In [3]:
Do you really want to exit ([y]/n)? y
<그림> |
jupyter notebook 테스트
1
2
3
$ ipython notebook --config='~/.ipython/profile_pyspark/ipython_config.py'
# browser 에서 새 노트 생성 후 파이썬 테스트
<그림> |
<그림> |
ipython profile 설정 (5~7단계)
ipykernel 설치 및 환경 생성
1
2
3
4
5
6
7
$ pip install ipykernel
# 환경설정 생성: pyspark
$ python -m ipykernel install --user --name=pyspark
# ~/Library/Jupyter/kernels/ 밑에 생성 (MacOS)
# - 기본적인 내용이 포함된 kernel.json 생성됨
kernel.json 수정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ vi ~/Library/Jupyter/kernels/pyspark/kernel.json
# 작성
# - {connection_file} 는 작성 항목 아님. 그대로 놔두면 됨
# - "env" 아래에 pyspark 연동을 위한 환경변수를 설정한다
{
"display_name": "pyspark",
"language": "python",
"argv": [
"/usr/local/bin/python3",
"-m",
"ipykernel",
"-f",
"{connection_file}"
],
"env": {
"SPARK_HOME": "/Users/bgmin/Servers/spark",
"PYTHONPATH": "/Users/bgmin/Servers/spark/python/:/Users/bgmin/Servers/spark/python/lib/py4j-0.10.7-src.zip:/Users/bgmin/Servers/spark/python/lib/pyspark.zip",
"PYSPARK_PYTHON": "/home/bgmin/.pyenv/shims/python3.7",
"PYSPARK_DRIVER_PYTHON": "jupyter",
"PYSPARK_DRIVER_PYTHON_OPTS": "notebook",
"PYTHONSTARTUP": "/Users/bgmin/Servers/spark/python/pyspark/shell.py",
"PYSPARK_SUBMIT_ARGS": "--master=spark://******:7077 --name 'pyspark.jupyter' --deploy-mode client pyspark-shell"
}
}
jupyter notebook 테스트 (spark 연동)
ipykernel 을 이용해 pyspark 연동을 설정했기 때문에,
실행시 자동으로 spark, sc 변수가 포함된다. (findspark 안해도 됨)
1
2
print(spark.version)
# >>> 2.4.7
<그림> pyspark 실행 화면 |
alias 설정
1
2
3
# 편리하라고 등록: ~/.zshrc
alias pyspark-notebook="ipython notebook --config='~/.ipython/profile_pyspark/ ipython_config.py'"
끝! 읽어주셔서 감사합니다.