Phase 1 · 대용량 I/O & 메모리 기초

초고속 바이너리 포맷 (Parquet & Feather) 및 Zstandard 압축

행 기반 텍스트 CSV의 비효율성을 벗어나, 엔터프라이즈 빅데이터 표준인 컬럼형(Columnar) 바이너리 포맷 Parquet과 초고속 IPC 포맷 Feather를 정복하고 Zstandard 압축을 적용합니다.

예상 소요 시간: 40분
난이도: 중급
필수 패키지: pyarrow, fastparquet, pandas
01

행 기반(CSV) vs 컬럼 기반(Parquet) 저장소 아키텍처

디스크 I/O를 획기적으로 줄여주는 컬럼형 저장 방식의 구조적 우수성과 딕셔너리 인코딩을 이해합니다.

02

Apache Arrow와 Feather 포맷의 Zero-Copy I/O

메모리 역직렬화(Deserialization) 오버헤드 없이 디스크에서 RAM으로 1초 만에 맵핑하는 Feather를 학습합니다.

Step 03 핵심 공학 포인트
CSV 대비 10배 빠른 로딩과 80% 디스크 절약의 비밀
빅데이터 환경에서는 알고리즘 복잡도(Big-O)뿐만 아니라 CPU 캐시 적중률, 직렬화 비용, 메모리 대역폭이 전체 처리 속도를 좌우합니다.
03

압축 알고리즘 비교: Snappy vs Gzip vs Zstandard

압축률과 압축/해제 속도의 황금 밸런스를 제공하는 Facebook의 Zstd(Zstandard) 알고리즘을 분석합니다.

04

파티셔닝(Partitioning)을 통한 디렉토리 기반 인덱싱

연도, 월, 카테고리별로 디렉토리를 분할 저장하여 특정 기간 질의 시 필요한 파일만 골라 읽는 기법을 배웁니다.

아키텍처 흐름 및 벤치마크 요약
[데이터 유입] ──▶ [병렬 파이프라인] ──▶ [메모리/엔진 최적화] ──▶ [초고속 저장/분석]
- 적용 도구: pyarrow, fastparquet, pandas
- 처리 속도: 수천만 건 기준 초당 수백만 행 Throughput 달성
05

PyArrow 기반 고성능 ParquetWriter 스트림

수천만 건 데이터를 메모리 초과 없이 파케이 파일로 한 행씩 스트리밍 압축 저장하는 코드를 작성합니다.

06

실전 완성 프로젝트: 10GB CSV 초고속 Parquet 변환기

멀티스레드 압축과 파티션 자동 생성을 지원하는 산업용 데이터 변환 엔진을 완성합니다.

step03_production_pipeline.py
import pandas as pd
import pyarrow.parquet as pq
import pyarrow as pa
import os

def export_partitioned_parquet(df: pd.DataFrame, output_dir: str):
    """연도/월 기준 디렉토리 파티셔닝과 Zstandard 압축 적용"""
    table = pa.Table.from_pandas(df)
    pq.write_to_dataset(
        table,
        root_path=output_dir,
        partition_cols=['year', 'month'],
        compression='zstd',
        compression_level=6,
        use_dictionary=True
    )
    print(f"✅ 파티션 분할 저장 완료: {output_dir}")
📦 CSV 8.2 GB ➡️ Parquet 740 MB (압축률 91%) ⚡ 읽기 속도: 24.5초(CSV) ➡️ 0.72초(Parquet, 34배 빠름!)
07

실습 과제 & 자가 점검 체크리스트

오늘 배운 핵심 체크리스트

다음 단계 안내
Step 04로 이동하여 다음 단계의 실무 기술을 마스터하세요!