data engineering

hue pyspark에서 외부 python 모듈 추가하는 방법.

qkqhxla1 2017. 7. 2. 20:09

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