💾 Data/etc

[Spark] Apache Spark

heywantodo 2024. 11. 29. 15:52
728x90
반응형

[Spark] Apache Spark

 

Apache Spark란?

Spark는 빠르고 범용적인 분산 데이터 처리 프레임워크로, 대규모 데이터를 병렬로 처리하는 데 최적화된 시스템이다.

Spark는 Hadoop의 MapReduce 모델보다 더 높은 수준의 API를 제공하며, 처리 속도와 유연성 면에서 많은 장점을 가지고 있다.

 

Apach Spark의 컴포넌트

스파크는 다양한 컴포넌트를 통해 데이터 처리의 여러 요구를 충족시킨다.

Spark Core Spark의 기본 엔진으로, 작업 분산, Task 스케줄링, 메모리 관리 등을 담당한다.
Spark SQL 데이터 프레임과 SQL 쿼리를 지원하여, 구조화된 데이터를 처리할 수 있다.
Hive와의 통합을 통해 기존 Hive 테이블을 Spark에서 사용할 수 있다.
Spark Streaming  실시간 데이터 스트림 처리를 위한 컴포넌트다.
Kafka, Flume 등과 통합하여 실시간 로그 분석, 알림 시스템 등을 구현할 수 있다.
MLlib 분산 머신러닝 라이브러리로, 선형 회귀, 클러스터링, 의사결정 트리 등의 알고리즘을 제공한다.
GraphX 그래프 데이터 분석을 위한 컴포넌트로, 그래프 알고리즘과 데이터 구조를 지원한다. 

 

RDD와 DAG

Spark는 RDD(Resilient Distributed Dataset)DAG(Directed Acyclic Graph)를 기반으로 데이터 처리를 수행한다.

 

RDD

  • Resilient : 장애 발생 시 데이터를 복구할 수 있다.
  • Distributed : 클러스터의 여러 노드에 데이터를 분산 저장 한다.
  • Dataset : 변경 불가능한 데이터 객체의 컬렉션이다.

DAG

Spark는 작업을 DAG로 표현하며, DAG는 작업의 실행 순서를 정의하는 비순환 그래프다.

이를 통해 최적화된 작업 스케줄링과 효율적인 데이터 처리가 가능하다. 

 

PySpark

PySpark는 Apache Spark의 Python API로, Spark의 기능을 Python 프로그래밍 언어를 통해 사용할 수 있도록 제공한다.

PySpark를 사용해서 sales.csv를 불러와 데이터를 읽고 변환하고 계산하는 코드를 짜보자

from pyspark.sql import SparkSession

# SparkSession 생성
spark = SparkSession.builder \
    .appName("Spark Example") \
    .getOrCreate()

# CSV 파일 읽기
data = spark.read.csv("data/sales.csv")

# 데이터 확인
data.show()

# 특정 열에 대한 변환 수행
filtered_data = data.filter(data["amount"] > 100)
filtered_data.show

# 매출 합계 계산
sales_summary = data.groupBy("region").sum("amount")
sales_summary.show()

# 평균 매출 계산
sales_avg = data.groupBy("region").avg("amount")
sales_avg.show()

#결과를 새로운 CSV 파일로 저장
sales_summary.write.csv("output/sales_summary.csv", header=True)

 

 

 

728x90
반응형