Spark의 지연 실행(Lazy Evaluation)은 변환 연산(map, filter 등)을 호출하더라도 즉시 실행되지 않고, "어떤 작업을 수행해야 하는지에 대한 계획"만 저장합니다. 이 계획은 DAG(Directed Acyclic Graph) 형태로 표현되며, 최종 연산(collect, saveAsTextFile 등)이 호출될 때 실행됩니다.
Python: 즉시 실행
data = [1, 2, 3, 4, 5]
result = [x ** 2 for x in data if x > 2]
print(result)
filter, map)을 즉시 수행합니다.Spark: 지연 실행
rdd = sc.parallelize([1, 2, 3, 4, 5])
rdd2 = rdd.filter(lambda x: x > 2) # 실행되지 않음
rdd3 = rdd2.map(lambda x: x ** 2) # 실행되지 않음
result = rdd3.collect() # 이때 모든 작업 실행
filter와 map을 하나의 계획으로 저장하다가, collect() 호출 시 필터링 후 제곱 계산을 한 번에 처리합니다.요약:
지연 실행과 DAG 최적화 덕분에 Spark는 데이터를 효율적으로 처리하며, 반복 작업이나 대규모 데이터 처리에서 성능을 극대화합니다.