TJ_Log
[Spark] Spark SQL, DataFrame, Datasets (Structured Data) 본문
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문을 사용해서 쿼리가 가능하다.
'STUDY > Spark' 카테고리의 다른 글
[Spark] 스파크 RDD란? (Resilient Distributed Dataset) (0) | 2022.06.15 |
---|---|
[Spark] 스파크(Spark)의 특징과 기본 개념 (0) | 2022.05.29 |