데이터/Spark

[Spark] 5. File Format

김줘 2024. 12. 3. 00:34

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")