TJ_Log

[Spark] Spark SQL, DataFrame, Datasets (Structured Data) 본문

STUDY/Spark

[Spark] Spark SQL, DataFrame, Datasets (Structured Data)

PTJ 2022. 6. 21. 00:25

1. Structured vs Unstructured Data

  • Unstructured (free form) : 로그 파일, 이미지
  • Semi Structured (행과 열 or key와 value) : CSV, JSON, XML
  • Structured (행과 열 + 데이터 타입(스키마)) : 데이터베이스

 

2. Structured Data vs RDD

  • RDD
    • 데이터의 구조를 모르기때문에 데이터를 다루는 것을 개발자에게 의존
    • Map, flatMap, filter등을 통해 유저가 만든 function을 수행 -> 유저 숙련도에 따라 성능이 차이나게됨
  • Structured Data
    • 데이터의 구조를 이미 알고있으므로 어떤 테스크를 수행할것인지 정의만 하면 됨
    • 최적화 자동으로 수행됨 (Catalyst Optimize와 Tungsten Project)

 

3.  Spark SQL

  • Spark SQL은 구조화된 데이터를 다루는 Spark위에 구현된 하나의 패키지로 SQL로 데이터로 다룰 시 자동으로 연산이 최적화 됨
  • 3개의 주요 API - SQL, DataFrame, Datasets
  • 2개의 벡엔드 컴포넌트
    • Catalyst - 쿼리 최적화 엔진
    • Tungsten - 시리얼라이저 (용량 최적화)

 

4.  DataFrame

  • Spark Core에 RDD가 있다면 Spark SQL엔 DataFrame, DataFram은 테이블 데이터셋이며 개념적으론 RDD에 스키마가 적용된것으로 보면 됨
  • RDD와 DataFrame 변환이 가능
  • MLLib나  Spark Streaming 같은 다른 Spark 모듈들과 사용하기 편하다.
  • SQL문을 사용해서 쿼리가 가능하다.