Data Engineering/Apache Spark

[Spark] 스파크 완벽 가이드 04 - Ch 04. 구조적 API 개요

minjiwoo 2023. 11. 7. 23:27
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