이번 포스트는 예전에 포스트했었던 spark를 설치하여 jupyter notebook 환경에서 pyspark를 사용하는 것보다 활용하기 쉬운 pip를 통해 pyspark를 다운로드하고 확인하고, 실습해보겠습니다.
예전 포스트 링크
2021.02.17 - [BigData/Spark & Spark Tuning] - [PySpark] Spark 환경 설정 with Anaconda(Jupyter Notebook) Python(Pyspark Standalone mode) on windows
여기서 pyspark를 pip를 통해 다운로드 한다고 실행되는 것은 아닙니다.
- spark-3.2.1-bin-hadoop2.7.tgz를 다운 받아 압축풀기
- spark-3.2.1-bvin-hadoop2.7의 경로에 대해서 HADOOP_HOME설정
- jdk를 다운받아 jdk경로로 JAVA_HOME 설정
- winutils파일도 HADOOP_HOME\bin 폴더에 위치해 있어야 함
자세한 건 위의 링크에 나와있습니다.
1. findspark 없이 pyspark 실행
기존에 포스트한 글에는 spark를 설치하고, findspark 모듈을 통해 spark를 런타임시에 sys.path에 등록할 수 있게 해주어 설치된 spark에서 pyspark 패키지를 가져올 수 있었습니다.
import findspark
findspark.init()
from pyspark.sql import SparkSession
#sparksession 드라이버 프로세스 얻기
spark = SparkSession.builder.appName("sample").master("local[*]").getOrCreate()
#클러스터모드의 경우 master에 local[*] 대신 yarn이 들어간다.
spark.conf.set("spark.sql.repl.eagerEval.enabled",True)
#jupyter환경에서만 가능한 config, .show()메소드를 사용할 필요없이 dataframe만 실행해도,정렬된 프린팅을 해준다.
다음 사진과 같이 findspark가 없으면 pyspark를 찾지 못해 에러를 내게 됩니다.
2. pyspark 패키지를 pip로 다운로드
terminal에서 직접 pip install pyspark를 사용해 pyspark 패키지를 다운받습니다.
그런데 여기서 위와 같이 버전을 명시해주지 않으면, 최신 pyspark 패키지를 다운받게 됩니다.
(2022-02-24 시점 spark-3.2.1버전)
spark 3.2.1버전은 파이썬 3.6버전을 더 이상 지원하지 않으며, 3.6보다 상위 버전의 파이썬 버전으로 실행해야합니다.
파이썬 3.6 이하의 버전을 사용하실 분은 직접 pyspark의 버전을 명시해줍니다
pip install pyspark=3.1.2
jupyter notebook을 사용하시는 분은 코드로도 pyspark 모듈을 다운 받으실 수 있습니다.
sparksession 생성을 통해 pyspark가 잘 다운로드 되었는지 확인
python IDE, pycharm에서도 pyspark 패키지를 다운로드 해보겠습니다.
먼저, 프로젝트를 가상환경을 이용해 새로운 프로젝트를 만듭니다.
SparkSession을 생성하는 코드를 실행시키면 역시 오류가 나는데,
마찬가지로 터미널에서 pip install pyspark를 통해 다운받아줍니다.
pyspark패키지가 잘 설치되었고,
sparksession 또한 생성이 잘 되었습니다.
3. spark 프레임워크 설치와 pyspark 패키지 다운로드의 차이점
기존 spark 프레임워크를 설치하게되면 다음과 같은 구성으로 이루어져 있는데, pyspark패키지는 아래의 사진의 python 디렉토리의 pyspark 패키지와 거의 동일합니다.
좌측 pip install 로 다운받은 패키지
우측 spark framework-python 디렉토리속 pyspark 패키지
따라서 pyspark를 pip install로 다운받을 시, spark framework속에서 pyspark를 구동하는데 필요한 패키지만 다운로드한다는 것을 알 수 있습니다.
4. pyspark를 통해 파일 읽고, 쓰기
뉴욕 택시 데이터 csv파일을 읽고 써보겠습니다.
https://www1.nyc.gov/site/tlc/about/tlc-trip-record-data.page
데이터를 데이터프레임으로써 저장하고, show()를 통해 읽어옵니다.
데이터프레임을 2021-01-01일자만 뽑아서 써보겠습니다.
안의 csv파일을 열어보니 2021-01-01 데이터만 뽑히어 저장된 것을 알 수 있습니다.
수정
2022-03-22 1차수정
'BigData > Spark & Spark Tuning' 카테고리의 다른 글
[Spark] PySpark read & write + partitioning 간단한 예시문제 (2) | 2022.08.23 |
---|---|
[Spark] 스파크의 문법적 자유도, 스키마 조작, dummy 생성 (0) | 2022.03.26 |
[Spark] Spark 개요, Spark란 무엇이고 어떤 역할을 하는가? Spark Core, Pandas와 비교 (0) | 2022.01.26 |
[Spark] Spark 실행 과정 by Catalyst Optimizer, Query plan 보는 법, Spark UI 보는 법 (0) | 2022.01.12 |
[Spark] Spark tuning, job에 따른 최적의 Partition 크기, 개수 조정하기 (0) | 2022.01.11 |
댓글