본문 바로가기
data processing/spark

Spark RDD 프로그래밍

by nothing-error 2023. 1. 24.

Apache Spark에서 RDD(Resilient Distributed Datasets)를 사용한 프로그래밍에는 Transformations과 Actions이라는 두 가지 주요 작업이 있습니다.

Transformations: Transformation은 기존 RDD에서 새 RDD를 생성하는 작업입니다. 일반적인 Transformation의 몇 가지 예에는 map, filter 및 groupBy가 포함됩니다. Transformation은 lazy합니다. 즉,  Actions이 이뤄지기 전까지는 실행되지 않습니다. 이를 통해 Spark는 실행 계획을 최적화하고 데이터 셔플링을 최소화할 수 있습니다.

Actions: Action은 값을 반환하거나 side effect를 생성하는 작업입니다. 일반적인 Action의 몇 가지 예로는 count, collect, save 등이 있습니다. Action은 Transformationdmf 실행하고 계산결과를 보여줍니다.

from pyspark import SparkConf, SparkContext

conf = SparkConf().setAppName("wordCount")
sc = SparkContext(conf=conf)

# Read a text file
text_file = sc.textFile("path/to/file.txt")

# Perform transformations
word_counts = text_file.flatMap(lambda line: line.split()) \
             .map(lambda word: (word, 1)) \
             .reduceByKey(lambda a, b: a + b)

# Perform an action
word_counts.saveAsTextFile("path/to/output/directory")

SparkContext를 생성하고 임의의 텍스트파일을 읽고, flatMap 함수로 텍스트 내용을 단어별로 짜른 후 map함수를 통해서 형태를 (word, 1) 의 key -value 형식으로 변경해줍니다. 그리고 key(단어) 별로 카운팅을 한 다음 해당 내용을 저장하는 코드입니다.

 

 여기서  flatMap ----> map ----> reduceByKey 의 과정에서 map 까지는 실제 작업이 실행되지 않고, reduceByKey 에서 실제 작업이 실행됩니다. 

'data processing > spark' 카테고리의 다른 글

spark 소개  (0) 2023.01.24
Zeppelin(spark) 인터프리터 설정  (0) 2022.12.29
Zeppelin 환경구성  (0) 2022.12.29
SPARK 서버 환경 구성  (0) 2022.12.28

댓글