Spark File Format
CSV
- 특징
- 텍스트 기반의 파일 포맷
- 데이터를 콤마로 구분
- 장점
- 매우 단순하고, 다른 시스템에서 쉽게 사용 가능
- 가벼운 데이터 전송을 위해 사용
- 단점
- 스키마 정보가 포함되지 않아서 데이터 구조를 명확히 알 수 없음
- 큰 데이터셋 처리 시 성능 저하
- 예시
df = spark.read.option("header", "true").csv("path/to/file.csv")
JSON
- 특징
- 텍스트 기반의 파일 포맷
- 키-값 쌍의 형태로 데이터 저장
- 데이터 계층 구조 지원
- 장점
- 유연한 데이터 구조 지원
- 다른 시스템과 쉽게 호환
- 단점
- 대량의 데이터에 대해 성능 좋지 않음 (텍스트로 저장되기에 크기 증가)
- 스키마 정보 명시적으로 제공 X
- 예시
df = spark.read.json("path/to/file.json")
Parquet
- 특징
- 컬럼 지향적 파일 포맷
- 효율적인 데이터 압축 및 성능 최적화 제공
- 스키마 정보 포함
- HDFS, S3와 같은 분산 파일 시스템에서 사용
- 장점
- 컬럼 기반 저장 방식으로, 쿼리 성능 최적화 가능
- 필요한 컬럼만 읽을 수 있어 I/O 감소
- 데이터 압축을 잘 지원하여 저장 공간 절약과 읽기 성능 향상
- Spark와 다른 빅데이터 처리 시스템과 호환성 높음
- 단점
- 가독성이 떨어짐
- 예시
df = spark.read.parquet("path/to/file.parquet")
ORC
- 특징
- Parquet과 비슷한 컬럼 지향적 포맷
- 주로 Hive와 연동
- 성능 최적화를 위해 컬럼 압축 및 효율적인 데이터 저장 방식 사용
- 장점
- 컬럼 기반 저장 방식으로 쿼리 성능 최적화
- Parquet보다 압축 효율, 처리 성능이 뛰어남
- 단점
- Hive 중심으로 설계되어 있어, 다른 시스템과의 호환성에서 Parquet보다 제한적
- 예시
df = spark.read.orc("path/to/file.orc")
Avro
- 특징
- 레코드 지향적 파일 포맷
- 주로 대용량 처리 시스템에서 사용
- JSON 기반으로 데이터를 표현하지만, 이진 형식으로 저장되어 크기가 더 작고 성능 좋음
- 스키마를 내장하여 데이터를 직렬화
- 장점
- 스키마를 명시적으로 포함하고 있어, 데이터 구조를 명확하게 정의
- 효율적인 이진 포맷으로 저장되어 성능 좋음
- 데이터 버전 관리와 호환성 유지에 유리
- 단점
- 가독성 떨어짐
- 예시
df = spark.read.format("avro").load("path/to/file.avro")
'데이터 > Spark' 카테고리의 다른 글
[Spark] 7. Partitioning & Bucketing (0) | 2024.12.03 |
---|---|
[Spark] 6. Spark Execution Plan (0) | 2024.12.03 |
[Spark] 4. Database & Table (2) | 2024.12.03 |
[Spark] 3. Spark SQL (0) | 2024.12.02 |
[Spark] 2. Spark Session (0) | 2024.12.02 |