728x90
구조적 API 의 종류
- Dataset
- DataFrame
- SQL Table 과 View
DataFrame 과 Dataset 의 특징
- 공통점 : row 와 column 을 가지는 분산 테이블 형태의 컬렉션
- Dataset은 결과를 생성하기 위해 어떤 데이터에 어떤 연산을 적용해야 하는지 정의하는 지연 연산의 실행 계획이며 불변성을 가진다. 스키마에 명시된 데이터 타입의 일치 여부를 컴파일 타임에 확인한다.
- Dataset 은 JVM 기반 언어인 scala 와 java에서만 지원하며, Dataset의 데이터 타입을 정의하려면 scala case class 나 JavaBean 을 사용해야 한다.
- DataFrame은 액션을 호출하면 스파크가 트랜스포매이션을 실제로 실행하고 반환함. 스키마에 명시된 데이터 타입의 일치 여부를 런타임이 되어서야 확인한다.
- DataFrame 은 Row Type으로 구성된 Dataset이다.
- DataFrame 을 사용하면 스파크의 최적화된 내부 포맷을 사용할 수 있다.
- schema : DataFrame의 컬럼명과 데이터 타입을 정의함
구조적 API의 실행 과정
- DataFrame/Dataset/SQL 을 이용해 코드를 작성함.
- 정상적인 코드라면 Spark가 논리적 실행 계획으로 변환함.
- Spark 가 논리적 실행 계획을 물리적 실행 계획으로 변환하여 최적화를 확인함.
논리적 실행 계획
- 논리적 실행 계획으로 변환하는 단계에서는 추상적 트랜스포매이션만 표현한다. 이 단계에서는 드라이버, 익스큐터의 정보를 고려하지 않는다.
- 사용자의 코드를 최적화된 버전으로 변환한다.
- 스파크 분석기는 컬럼과 테이블을 검증하기 위해 카탈로그, 모든 테이블의 저장소, DataFrame의 정보를 활용한다. 검증된 컬럼과 테이블에 대한 결과는 카탈리스트 옵티마이저로 전달된다.
물리적 실행 계획
- 물리적 실행 계획은 스파크 실행 계획이라고도 한다.
- 논리적 실행 계획을 클러스터 환경에서 실행하는 방법을 정의한다.
- 다양한 물리적 실행 전략을 생성하고 비용 모델을 이용해서 비교한 후 최적의 전략을 선택한다. -> ex. 테이블의 크기나 파티션 수 등 물리적 속성을 고려하여 연산 수행에 가장 최적화된 전략을 선택한다.
- Spark는 DataFrame, Dataset, SQL로 정의된 쿼리를 RDD 트랜스포매이션으로 컴파일 한다. -> Spark 를 '컴파일러' 라고도 할 수 있다.
컴파일(Compile) : 인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU 가 이해할 수 있는 저 수준 언어로 변환하는 작업
728x90
'Data Engineering > Apache Spark' 카테고리의 다른 글
[Spark] Ch.15 클러스터에서 스파크 실행하기 (0) | 2024.01.04 |
---|---|
[Spark] 스파크 완벽 가이드 Ch09. 데이터 소스 (0) | 2023.11.27 |
[Spark] 스파크 완벽 가이드 (3) - Ch.03 스파크 기능 둘러보기 (Dataset, Structured Streaming) (0) | 2023.11.02 |
[Spark] 스파크 완벽 가이드 (2) - Ch 02. 스파크 간단히 살펴보기 (1) | 2023.10.29 |
[Spark] 스파크 완벽 가이드 (1) - Ch 01. 아파치 스파크란 (0) | 2023.10.29 |