본문 바로가기
Programming (프로그래밍)/Python

[PySpark] PySpark 시작하기: 기본 개념과 설정

by 김조이1 2025. 2. 5.
728x90

1. PySpark란?

PySpark는 대용량 데이터를 분산 처리할 수 있는 Apache Spark의 Python API이다.
Spark는 Hadoop보다 빠른 메모리 기반 데이터 처리 엔진으로, 데이터 분석, 머신러닝, 실시간 데이터 처리 등에 널리 사용된다.

 

PySpark의 주요 특징

  • 빠른 데이터 처리: In-Memory(메모리 내) 연산을 지원해 속도가 빠름
  • 확장성: 클러스터를 활용해 데이터 병렬 처리 가능
  • 유연한 인터페이스: SQL, DataFrame, RDD, 머신러닝 등 다양한 기능 제공

2. PySpark 설치 및 환경 설정

PySpark 설치 방법

터미널이나 CMD에서 아래 명령어 실행:

 
pip install pyspark

pip install findspark # Jupyter Notebook 사용 시 필요

java -version

3. PySpark 기본 설정: SparkSession 만들기

PySpark를 사용하려면 SparkSession 객체를 생성해야 한다.
SparkSession은 PySpark의 핵심 엔진 역할을 하며, 데이터 처리를 위한 SQL, DataFrame, RDD API를 제공한다.

from pyspark.sql import SparkSession

# SparkSession 생성
spark = SparkSession.builder.appName("MyApp").getOrCreate()

# 기본 정보 확인
print(spark)

- appName("MyApp"): 실행되는 Spark 애플리케이션의 이름
- getOrCreate(): 기존 세션이 없으면 새로 만들고, 있으면 기존 세션을 가져옴


4. 데이터 불러오기: CSV 파일 읽기

SparkSession을 만든 후 데이터를 불러올 수 있다. Spark는 다양한 포맷(CSV, JSON, Parquet 등)의 데이터를 읽을 수 있다.

CSV 파일을 DataFrame으로 로드

df = spark.read.csv("data.csv", header=True, inferSchema=True)
df.show(5)  # 상위 5개 행 출력

- header=True: CSV의 첫 번째 줄을 컬럼 이름으로 사용
- inferSchema=True: 자동으로 데이터 타입 추론 (숫자는 Integer, 문자열은 String으로 변환)

df_json = spark.read.json("data.json")
df_parquet = spark.read.parquet("data.parquet")

5. 데이터 구조 확인하기

 
df.printSchema()  # 데이터 타입 확인
root
 |-- id: integer (nullable = true)
 |-- name: string (nullable = true)
 |-- age: integer (nullable = true)


df.columns  # 컬럼 이름 리스트 출력
df.describe().show()  # 기본 통계 요약

6. PySpark 실행 환경 설정 (로컬 or 클러스터)

PySpark는 로컬 환경에서도 실행할 수 있고, 클러스터에서 확장할 수도 있다.

  • 로컬 실행 (개발 및 테스트용)
spark = SparkSession.builder.master("local[*]").appName("LocalSpark").getOrCreate()
  • 클러스터 실행 (Spark Standalone, YARN, Mesos 등)
spark = SparkSession.builder.master("spark://<master-node-ip>:7077").appName("ClusterSpark").getOrCreate()

로컬 실행 시 local[*]는 모든 CPU 코어를 사용한다는 의미이다.


7. PySpark 종료 (세션 닫기)

작업이 끝나면 리소스를 정리하기 위해 SparkSession을 종료하는 게 좋다.

 
spark.stop()

 

반응형