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 |
댓글