Apache Spark는 데이터 처리를 위해 Transformation과 Action이라는 두 가지 주요 연산을 제공합니다. 또한, Lazy Evaluation이라는 개념을 도입하여 효율적인 실행 계획을 수립합니다.
Transformation
Transformation은 기존의 데이터를 변환하여 새로운 RDD(Resilient Distributed Dataset)를 생성하는 연산입니다. Transformation은 원본 데이터를 변경하지 않고, 새로운 RDD를 생성하므로 Immutable(불변)한 특성을 가지고 있습니다. 주로 Map, Filter 등의 연산이 여기에 해당합니다.
Narrow Transformation
Narrow Transformation은 각 입력 파티션에서의 데이터만을 사용하여 출력 파티션을 계산하는 Transformation입니다. 이는 각 입력 파티션 간에 의존성이 거의 없다는 특징이 있습니다. 예를 들어, `map`, `filter`, `union`과 같은 연산이 Narrow Transformation에 속합니다.
Narrow Transformation의 장점은 병렬 처리 및 데이터 셔플이 필요하지 않다는 것입니다. 각각의 파티션은 독립적으로 처리되기 때문에, 병렬로 실행할 수 있어 성능이 향상됩니다. 하지만, Narrow Transformation은 두 개 이상의 데이터 파티션 간에 의존성이 거의 없기 때문에, 특정 파티션 간의 연산 결과가 다른 파티션에 영향을 미치지 않는 경우에만 사용합니다.
Wide Transformation
Wide Transformation은 여러 입력 파티션 간에 데이터 셔플(shuffle)이 필요한 Transformation입니다. 데이터 셔플은 데이터의 재분배를 의미하며, 서로 다른 워커 노드 간에 데이터를 이동시켜야 할 때 발생합니다. 예를 들어, `groupByKey`, `reduceByKey`, `join`과 같은 연산이 Wide Transformation에 속합니다.
Wide Transformation의 특징은 여러 입력 파티션 간에 의존성이 있어서 데이터 이동과 재분배가 필요하다는 것 입니다. 이로 인해 성능 저하가 발생할 수 있습니다. Wide Transformation을 사용할 때에는 데이터 셔플이 발생하므로 이를 최소화하고자 최적의 파티셔닝 전략을 선택하는 것이 중요합니다.
Action
Action은 RDD에 대한 계산을 실제로 수행하고 결과를 반환하는 연산입니다. Action이 호출되기 전까지는 Transformation이 수행되지 않습니다. Action이 실행되면 Spark는 전체 Transformation 계보를 추적하고, 필요한 Transformation들을 실행하여 결과를 계산합니다. 예를 들어, `collect`, `count`, `first`, `reduce`와 같은 연산이 Action에 속합니다.
Lazy Evaluation
Lazy Evalution은 Spark의 특징 중 하나로, Action이 호출되기 전까지 Transformation을 실제로 실행하지 않는 것을 의미합니다. 이는 큰 데이터셋에서 불필요한 계산을 피하고, 효율적인 실행 계획을 수립하는 데 도움이 됩니다.
Lazy Evalution은 Action이 호출되기 전까지 Transformation을 수행하지 않는 원리를 갖고 있습니다. Spark는 DAG(Directed Acyclic Graph)를 사용하여 각 Transformation을 추적하고, Action이 발생하면 이 DAG를 실행 계획으로 변환하여 실행합니다. 이를 통해 최적의 실행 순서와 계획을 수립할 수 있습니다.
'데이터 > Apache Spark' 카테고리의 다른 글
[Apache Spark] RDD란 무엇인가? (0) | 2023.11.26 |
---|---|
[Apache Spark] 로컬 환경에 설치 및 간단 예제 (2) | 2023.11.26 |
[Apache Spark] Apache Spark의 메커니즘 (0) | 2023.11.23 |
[Apache Spark] Apache Spark의 아키텍처 (0) | 2023.11.23 |
[Apache Spark] Apache Spark란 무엇인가? (2) | 2023.11.22 |