📘 PySpark으로 파일 다루기

PySpark?

대용량 데이터를 빠르게 처리하기 위한 Apache Spark를 Python 코드로 사용할 수 있게 해주는 도구.

🔥 PySpark가 필요한 이유

보통 pandas는 메모리에 올릴 수 있는 데이터만 처리할 수 있어서, 데이터가 몇십 GB, 몇백 GB가 되면 버벅이거나 아예 불가능해요.
이때, Spark는 데이터를 여러 CPU 코어, 여러 서버로 분산 처리(distributed computing)해서  엄청 큰 데이터를 빠르게 처리할 수 있어요.
PySpark는 그 Spark를 Python으로 편하게 쓰도록 만든 파이썬 API이에요.

빅데이터를 다루기에 한계가 있는 pandas 말고 다룰 수 있는 도구인 거예요.

시작하기

import os
os.environ["PYSPARK_PYTHON"] = "python"
os.environ["PYSPARK_DRIVER_PYTHON"] = "python"

 

이렇게 파일을 불러온 상태에서 해주세요


특정 컬럼과 파일 불러오기

from pyspark.sql import SparkSession
from pyspark.sql.functions import col

spark = SparkSession.builder \
    .appName("PySpark Example") \
    .master("local[*]") \
    .getOrCreate()

df = spark.read.csv("data/Subjects.csv", header=True, inferSchema=True)
df = df.withColumn("total", col("kor") + col("eng") + col("math") + col("science"))
df.show()
마지막의 "df.show()" 코드를 통해서 csv파일을 볼 수 있어요.

칼럼을 total, kor, eng, math, science로 했기 때문에 총 5개만 보여요.

컬럼 추가, 평균 점수 계산, 조건 필터링

# 컬럼 추가 : 총점
df = df.withColumn("total", col("kor") + col("eng") + col("math") + col("science"))
df.show()

# 평균 점수 계산
df.groupby().avg("total").show()

# 조건 필터링 : 총점 300 이상 합격
df.filter(col("total") >= 300).show()
이러면 결과가

코드 작성한 순서대로 결과가 함께 나와요.

Spark에서 SQL 쿼리문으로 파일 불러오기

# Temp View 생성
df.createOrReplaceTempView("students")

# SQL 쿼리으로도 조회가 가능한 spark
high_score = spark.sql("SELECT name, total FROM students WHERE total >= 300")
high_score.show()
Spark에서도 SQL 쿼리문으로 불러올 수 있네요!

사용 완료 후, 세션 종료하기

spark.stop()
print("SparkSession 종료")
Spark은 사용 완료 후 세션을 꼭! 종료를 해줘야 해요. 안 그러면 꼬여버려서 골치가 아프거든요 😣

마무리

오늘 다뤘던 데이터는 용량이 크거나 양이 많거나 하진 않았지만, PySpark를 통해서 데이터를 어떻게 다룰 수 있는지 알 수 있게 되었어요. 🤗 다음에는 빅데이터를 PySpark로 다룰 수 있는 기회가 생겼으면 좋겠네요! 😜

+ Recent posts