[python] 파이썬 스파크를 활용한 데이터 베이스 연동

이번 포스트에서는 파이썬 스파크를 사용하여 데이터베이스와의 연동 방법에 대해 알아보겠습니다. 스파크는 대규모 데이터 처리를 위한 오픈소스 클러스터 컴퓨팅 프레임워크로, 다양한 데이터 소스와의 연동을 지원합니다. 데이터베이스와 연결하여 데이터를 읽고 쓰는 방법을 살펴보겠습니다.

1. 스파크 데이터베이스 연동 설정하기

먼저, 스파크를 사용하기 위해 별도의 라이브러리를 설치해야 합니다. SQLAlchemy는 파이썬에서 SQL 데이터베이스에 접근하기 위한 패키지로, 스파크와의 연동에 사용됩니다. 다음 명령을 사용하여 SQLAlchemy를 설치합니다.

pip install SQLAlchemy

또한, 스파크에서 JDBC 드라이버를 사용하기 위해 드라이버 JAR 파일을 다운로드해야 합니다. 사용하는 데이터베이스마다 다른 드라이버 파일을 사용해야 하며, 이를 설정하기 위해 해당 데이터베이스 공식 문서를 참조하시기 바랍니다.

드라이버 파일을 다운로드한 뒤 스파크의 spark.jars 옵션을 사용하여 드라이버를 추가합니다. 예를 들어, 다음과 같이 명령을 실행합니다.

pyspark --conf "spark.jars=/path/to/driver.jar"

2. 데이터베이스에서 데이터 읽기

데이터베이스에서 데이터를 읽어오기 위해 SQLAlchemy를 사용하여 데이터베이스 연결을 설정합니다. 다음은 예시입니다.

from sqlalchemy import create_engine
from pyspark.sql import SparkSession

# 데이터베이스 연결 설정
db_url = "jdbc:postgresql://localhost:5432/mydatabase"
user = "username"
password = "password"
driver = "org.postgresql.Driver"

# SQLAlchemy 엔진 생성
engine = create_engine(f'{db_url}?user={user}&password={password}&driver={driver}')

# 스파크 세션 생성
spark = SparkSession.builder.getOrCreate()

# 스파크에서 데이터 읽기
df = spark.read \
    .format("jdbc") \
    .option("url", db_url) \
    .option("user", user) \
    .option("password", password) \
    .option("driver", driver) \
    .option("dbtable", "tablename") \
    .load()

# 읽어온 데이터 확인
df.show()

3. 데이터베이스에 데이터 쓰기

데이터베이스에 데이터를 쓰기 위해서는 스파크 데이터프레임을 생성하고 해당 데이터프레임을 데이터베이스에 저장해야 합니다. 다음은 예시입니다.

# 스파크 데이터프레임 생성
data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)]
columns = ["name", "age"]
df = spark.createDataFrame(data, columns)

# 데이터베이스에 데이터 쓰기
df.write \
    .format("jdbc") \
    .option("url", db_url) \
    .option("user", user) \
    .option("password", password) \
    .option("driver", driver) \
    .option("dbtable", "tablename") \
    .mode("append") \
    .save()

마무리

이번 포스트에서는 파이썬 스파크를 활용하여 데이터베이스와의 연동 방법을 알아보았습니다. 데이터베이스에서 데이터를 읽어오고, 데이터베이스에 데이터를 쓰는 예시를 살펴보았습니다. 스파크를 사용하면 다양한 데이터 소스와의 연동이 가능하며, 데이터 처리 작업을 보다 효과적으로 수행할 수 있습니다.

참고 자료: