Hadoop EcoSystem

[Spark] DataFrame

비번변경 2023. 11. 28. 14:40

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) 개념 파악하기

https://phoenixnap.com/kb/spark-dataframe

https://artist-developer.tistory.com/21