Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib로 PySpark SQL 결과를 시각화하는 방법

빅데이터 분석 환경에서 PySpark SQL로 조회한 결과를 Matplotlib를 활용해 그래프로 시각화하는 것은 데이터 인사이트를 파악하는 데 매우 유용합니다. 이 글에서는 PySpark SQL 쿼리 결과를 Pandas 데이터프레임으로 변환한 뒤 Matplotlib으로 플롯하는 전체 과정을 단계별로 살펴보겠습니다.

처리 순서

  • 그림 크기(figure size)를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
  • Spark 기능의 기본 진입점(Entry Point) 역할을 하는 SparkContext 인스턴스를 생성합니다.
  • Hive에 저장된 데이터와 통합되는 Spark SQL 변형인 HiveContext 인스턴스를 가져옵니다.
  • 튜플 형태의 레코드 리스트를 만듭니다.
  • 로컬 Python 컬렉션을 분산 처리하여 RDD(Resilient Distributed Dataset)로 변환합니다.
  • 리스트의 각 레코드를 DB 스키마 형태(Row 객체)로 매핑합니다.
  • 스키마 인스턴스를 생성하여 "my_table" 테이블에 등록합니다.
  • SQL 쿼리를 실행해 테이블에서 레코드를 조회합니다.
  • 조회된 결과를 Pandas 데이터프레임으로 변환합니다.
  • name 컬럼을 인덱스로 지정한 후 데이터를 플롯합니다.
  • 그래프를 화면에 표시하려면 show() 메서드를 사용합니다.

예제 코드

from pyspark.sql import Row
from pyspark.sql import HiveContext
import pyspark
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

sc = pyspark.SparkContext()
sqlContext = HiveContext(sc)

test_list = [(1, 'John'), (2, 'James'), (3, 'Jack'), (4, 'Joe')]
rdd = sc.parallelize(test_list)
people = rdd.map(lambda x: Row(id=int(x[0]), name=x[1]))
schemaPeople = sqlContext.createDataFrame(people)
sqlContext.registerDataFrameAsTable(schemaPeople, "my_table")

df = sqlContext.sql("Select * from my_table")
df = df.toPandas()
df.set_index('name').plot()

plt.show()

실행 결과

위 코드를 실행하면 각 이름(id 1~4: John, James, Jack, Joe)에 해당하는 값이 막대그래프로 출력됩니다. x축에는 이름(name)이, y축에는 id 값이 표시됩니다.

Matplotlib로 PySpark SQL 결과를 시각화하는 방법

핵심 포인트 정리

  • toPandas() 변환: PySpark 데이터프레임은 분산 환경에서 동작하기 때문에 Matplotlib으로 바로 그릴 수 없습니다. 반드시 toPandas() 메서드를 사용해 로컬 Pandas 데이터프레임으로 변환해야 합니다.
  • HiveContext 활용: HiveContext를 사용하면 Hive에 저장된 기존 데이터와도 손쉽게 연동할 수 있습니다.
  • 임시 테이블 등록: registerDataFrameAsTable()로 데이터프레임을 임시 테이블로 등록하면 SQL 문법으로 직관적으로 데이터를 조회할 수 있습니다.

이처럼 PySpark SQL과 Matplotlib을 결합하면 대용량 데이터를 SQL로 가공한 뒤, 익숙한 시각화 도구로 결과를 빠르게 확인할 수 있습니다.