[Apache Spark] 로컬 환경에 설치 및 간단 예제
이번에는 로컬 환경에 Apache Spark를 설치하고 간단한 예제를 작성하여 실습을 진행해 보도록 하겠습니다.
저는 macOS를 사용하고 있어서, 윈도우 환경에서 진행하시는 분들과는 약간의 차이가 있을 수 있습니다.
자바 설치
먼저 Apache Spark에 필요한 Java를 설치해 줍니다. 자바 설치 방법은 다양하기 때문에 따로 설명을 추가하진 않겠습니다.
java --version
터미널에서 위 명령어를 입력했을 때, 버전 정보가 정상적으로 출력된다면 설치가 완료된 것 입니다.
IDE 설치
코드 작성에 사용할 IDE를 설치 해 줍니다. 저는 PyCharm을 사용하도록 하겠습니다. PyCharm 이외에 본인이 편하신 IDE를 사용하셔도 됩니다.
https://www.jetbrains.com/products/compare/?product=pycharm&product=pycharm-ce
JetBrains Products Comparison
www.jetbrains.com
PyCharm은 커뮤니티 버전을 무료로 사용하실 수 있습니다.
프로젝트 생성
프로젝트를 생성해 줍니다. 저는 이름을 `spark-practice-1`으로 하였습니다. 이름은 본인이 원하시는 이름으로 지정하시면 됩니다.
새로운 가상 환경을 추가하면서 프로젝트를 생성해 줍니다.
IDE의 터미널을 열었을 때, `(venv)`라는 표시가 보인다면, 가상 환경이 정상적으로 설정된 것입니다.
Spark 설치
pip install pyspark
IDE의 터미널에서 `pip install pyspark` 명령어를 입력하여, 현재 가상 환경에 Spark를 설치 해 줍니다.
pyspark
설치 후, 터미널에서 `pyspark` 명령어를 입력했을 때, 스파크 내부로 정상적으로 진입이 된다면 설치가 정상적으로 완료된 것입니다.
실습 데이터 다운로드
실습은 간단한 데이터 파일을 읽어와서 해당 파일의 워드 카운트를 집계하는 예제를 작성하도록 하겠습니다.
curl -O https://raw.githubusercontent.com/apache/spark/master/data/mllib/sample_lda_data.txt
터미널에서 위 명령어를 입력하여, 워드 카운트를 추출할 예제 샘플 파일 `sample_lda_data.txt` 파일을 다운로드 합니다.
코드 작성
# PySpark의 `SparkSession` 모듈을 가져오는 부분입니다.
# `SparkSession`은 Spark 애플리케이션을 시작하기 위한 주요 진입점입니다.
from pyspark.sql import SparkSession
if __name__ == '__main__':
# SparkSession을 생성합니다.
# Spark 애플리케이션의 이름을 "WordCount"로 지정합니다.
ss = SparkSession.builder \
.appName("WordCount") \
.getOrCreate()
# RDD(Resilient Distributed Dataset)를 생성합니다.
# `textFile` 함수를 사용하여 파일의 각 줄을 RDD로 변환합니다.
rdd = ss.sparkContext.textFile("sample_lda_data.txt")
# 각 단어의 등장 횟수를 세어 출력합니다.
# `flatMap` 함수는 각 줄을 공백을 기준으로 단어로 나누고, `map` 함수는 각 단어를 (단어, 1) 형태로 매핑합니다.
# `reduceByKey` 함수를 사용하여 동일한 키(단어)를 가진 항목들을 합산합니다.
word_counts = rdd.flatMap(lambda line: line.split(" ")) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda a, b: a + b)
# 결과를 출력합니다.
# `collect` 함수를 사용하여 RDD를 로컬 컬렉션으로 변환하고, 각 단어와 해당 등장 횟수를 출력합니다.
for word, count in word_counts.collect():
print(f"{word}: {count}")
이 코드는 단순한 형태의 Word Count 예제로, PySpark를 사용하여 대용량의 데이터를 분산 처리하는 기본적인 방법을 보여줍니다.