pyspark를 돌리면서 pip로 설치해서 쓰는 외부 모듈을 써야 하는 경우가 있는데, 서버가 우리것이 아니라면 pip로 설치해달라고 할수도 없고 난감하다. 이 경우 해당 모듈을 압축해서 올려서 사용 가능하다.
ex) 작업이 완료된 후, 내가 있는 슬랙 채널로 완료됬다는 메시지를 뿌려서 모니터링을 하고 싶어 slacker를 쓰고 싶은데 slacker가 없다. 이 경우... 내 맥 기준이다.slacker라이브러리 위치를 찾는다.
그리고 아래처럼 새 파일을 만든 후 slacker를 붙여넣는다. 모듈 여러개도 된다는걸 알리기 위해 두개 붙여넣었다.
python_module폴더를 .egg확장자로 압축한다. 아래 주소에서 --py-files옵션을 보면 다른 확장자도 된다.(그런데 안써봄)
https://spark.apache.org/docs/latest/submitting-applications.html
서버에 업로드 후 아래처럼 스파크 설정에서 --py-files옵션 뒤의 경로에 붙여넣는다. 일부 경로는 지웠다.
이젠 pyspark내부에서 requests나 slacker 등의 모듈을 사용해도 에러가 나지 않는다.
+ 모듈 말고도 파이썬 패키지를 압축해서 올려서 사용할 수 있다.참고.https://blog.cloudera.com/blog/2015/09/how-to-prepare-your-apache-hadoop-cluster-for-pyspark-jobs/
https://stackoverflow.com/questions/2852413/python-simple-example-for-a-python-egg-with-a-one-file-source-file
http://www.mxm.dk/2008/02/python-eggs-simple-introduction.html
등등을 참고해서 압축파일을 만든다. 업로드한후 pyspark 설정 부분에서 --py-files 옵션 뒤에 위의 모듈처럼 경로를 붙여준다. 두개 이상은 '--py-files 경로1, 경로2' 등으로 넣는다.
원래 실행시킬 Jars/py files 경로에는 본인이 실행시킬 파이썬 소스(main.py라고 가정)를 하나 더 업로드하고 그 경로를 집어넣는다.
압축해서 올린 파이썬 패키지를 사용하려면 main.py내부에서 importlib등을 이용해서 zip파일 내부를 불러온다.
'data engineering' 카테고리의 다른 글
스파크 최적화 삽질 관련 1. (0) | 2017.07.09 |
---|---|
shell script 하둡 명령어 자동 프로그램. (0) | 2017.07.07 |
hadoop shell 관련. (0) | 2017.06.25 |
aws 개발 관련 기본, 설정. (0) | 2017.06.24 |
spark 기초. (0) | 2017.06.08 |