DataFrame
행과 열로 구성된 분산 데이터 구조로, Spark 1.3에서 도입되었다.
각 열의 이름과 데이터 유형을 정의하는 스키마를 가져 정형 데이터를 다루기 좋다.
RDD VS DataFrame
DataFrame은 RDD의 성능적 이슈로 등장하게 되었다.
먼저 RDD에는 스키마 개념이 없어 구조화된 데이터와 비구조화된 데이터를 함께 저장할 수 있는 대신 처리에 대한 효율성은 떨어진다. 그리고 제대로 동작하기 위해서는 디스크와 메모리에 저장 공간이 충분해야 하고, 기본적으로 직렬화와 Garbage Collection을 사용하기 때문에 동작 시 메모리 오버헤드가 증가할 수 있다.
특징
1. 구조화된 구조
구조화된 데이터를 다루기 좋고, SparkSQL 등을 통해 데이터에 대한 쿼리를 수행할 수 있다.
2. Garbage Collection 오버헤드 감소
데이터를 메모리에 저장하는 RDD와 달리, DataFrame은 데이터를 Garbage Collection의 영향을 받지 않는 메모리 영역인 OFF-heap 영역에 저장한다.
3. 직렬화 오버헤드 감소
DataFramn은 OFF-heap 메모리를 사용해 직렬화를 수행한다.
4. 유연성 / 확장성
CSV, JSON, 카산드라 등의 다양항 데이터를 직접 지원한다.
참고 문서
https://www.databricks.com/kr/glossary/what-are-dataframes
[Spark] 스파크 데이터프레임(DataFrame) 개념 파악하기