Apache Spark는 대규모 데이터 처리를 위한 오픈 소스 클러스터 컴퓨팅 프레임워크로 분산 데이터 처리를 간편하게 할 수 있는 기능을 제공합니다. 그 중에서도 RDD(Resilient Distributed Dataset)는 Spark의 핵심 개념 중 하나입니다.
RDD란 무엇인가?
RDD는 데이터를 여러 노드에 분산하여 처리할 수 있는 데이터 구조입니다. 이는 Spark가 대량의 데이터를 효율적으로 처리하고 분석하기 위한 기반을 제공합니다. 간단하게 말하면, RDD는 여러 노드에 나누어 저장된 변경 불가능한 객체 모음이며, 데이터에 대한 병렬 처리를 가능케 합니다.
RDD의 특징
1. 탄력성 (Resilience) : RDD는 변경 불가능한 데이터 구조이므로, 노드에 장애가 발생하도 다른 노드에 복제된 데이터를 활용하여 작업을 수행할 수 있습니다.
2. 분산 처리 (Distributed Processing) : RDD는 여러 노드에 분산하여 저장되기 때문에, 대용량의 데이터를 효율적으로 처리할 수 있습니다.
3. 병렬성 (Parallelism) : RDD는 데이터를 여러 파티션으로 나누어 처리하므로, 각 파티션은 병렬로 처리될 수 있습니다.
RDD의 동작방식
1. Transformation : 기존의 RDD에서 새로운 RDD를 생성하는 연산입니다. 예를 들어, map, filter 등이 있습니다.
2. Action : RDD에서 결과를 반환하는 연산으로, 최종 결과를 얻기 위해 실행되는 연산입니다. 예를 들어, count, collect, save 등이 있습니다.
예제 코드
from pyspark import SparkContext
if __name__ == "__main__":
# SparkContext 생성
sc = SparkContext("local", "rdd-ex-1")
# RDD 생성
data = [1, 2, 3, 4, 5]
rdd = sc.parallelize(data)
# Transformation 예제: 각 요소에 2를 곱함
transformed_rdd = rdd.map(lambda x: x * 2)
# Action 예제: 결과를 수집하여 출력
result = transformed_rdd.collect()
print(result)
# SparkContext 종료
sc.stop()
`sc.parallelize(data)`는 SparkContext `sc`를 사용하여 데이터를 병렬로 처리할 수 있는 RDD를 생성합니다.
'데이터 > Apache Spark' 카테고리의 다른 글
[Apache Spark] 실습을 위한 로그 파일 생성 (1) | 2023.11.28 |
---|---|
[Apache Spark] 로컬 환경에 설치 및 간단 예제 (2) | 2023.11.26 |
[Apache Spark] Transformation과 Action (1) | 2023.11.25 |
[Apache Spark] Apache Spark의 메커니즘 (0) | 2023.11.23 |
[Apache Spark] Apache Spark의 아키텍처 (0) | 2023.11.23 |