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

2023. 11. 7. 23:27·Data Engineering/Apache Spark
목차
  1. 구조적 API 의 종류 
  2. DataFrame 과 Dataset  의 특징 
  3. 구조적 API의 실행 과정 
  4. 논리적 실행 계획 
  5. 물리적 실행 계획 
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
  1. 구조적 API 의 종류 
  2. DataFrame 과 Dataset  의 특징 
  3. 구조적 API의 실행 과정 
  4. 논리적 실행 계획 
  5. 물리적 실행 계획 
'Data Engineering/Apache Spark' 카테고리의 다른 글
  • [Spark] Ch.15 클러스터에서 스파크 실행하기
  • [Spark] 스파크 완벽 가이드 Ch09. 데이터 소스
  • [Spark] 스파크 완벽 가이드 (3) - Ch.03 스파크 기능 둘러보기 (Dataset, Structured Streaming)
  • [Spark] 스파크 완벽 가이드 (2) - Ch 02. 스파크 간단히 살펴보기
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • 코딩테스트
  • SPARK
  • Kubernetes
  • linux
  • docker
  • EC2
  • 알고리즘
  • 스파크
  • 리눅스
  • Swift
  • python
  • 클라우드
  • 프로그래머스
  • 카카오코딩테스트
  • dp
  • dfs
  • 백트래킹
  • 데이터엔지니어링
  • Leetcode
  • 쿠버네티스
  • 빅데이터
  • 데이터브릭스
  • BFS
  • 운영체제
  • 백준
  • 데이터엔지니어
  • AWS
  • ansible
  • Databricks
  • 파이썬

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
[Spark] 스파크 완벽 가이드 04 - Ch 04. 구조적 API 개요
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.