Default 가 돼야 할 포맷
Apache Parquet 은 원래 Hadoop 출신 columnar binary 파일 포맷, 이젠 분석 세계 어디나 있어. 각 column 데이터를 별도 압축 청크로, 풍부한 통계 (min/max/null-count) 와 함께, footer 가 reader 에게 filter predicate 로 전체 row group skip 하게 함. 결과: 100GB 파일에서 몇 column 만 읽는 query 가 필요한 byte 만 만지고 압축-인지 비용 지불.
CSV 대비 공짜로 받는 것
- Type. Schema 가 파일 일부.
amount_usd가double,order_date가timestamp[us]— 읽을 때 추측 없음. - 압축. Snappy 가 default;
zstd가 보통 비슷한 속도에 2–3× 좋은 비율. 10GB CSV 가 1–2GB Parquet 자주 됨. - Column pruning. 50-column 파일에서
order_date와amount_usd만 읽으면 나머지 48 skip. - Predicate pushdown.
WHERE country = 'KR'가 row-group 통계로country가'KR'안 가졌던 row group 전체 skip. - Splittable. 여러 reader 가 다른 row group 을 병렬 처리.
Partitioning — 다음 레벨
Parquet writer 가 논리적 "테이블" 을 orders/year=2026/month=04/data.parquet 같은 디렉토리 트리로 split 가능. Reader 가 파일 열기 전에 전체 partition prune. Column pruning + predicate pushdown 결합하면 단일 머신에서 DuckDB 로 수백 GB 데이터에 sub-second query 가능해.