피드로 돌아가기
Dev.toDatabase
원문 읽기
ClickHouse-local 도입을 통한 CSV 분석의 SQL 기반 고속 처리 전환
I stopped writing throwaway scripts for messy CSVs and just use SQL now
AI 요약
Context
비정형 CSV 데이터 분석을 위해 Python 및 pandas 기반의 일회성 스크립트를 반복 작성하던 비효율적 워크플로우 존재. 데이터 타입 불일치 및 전처리 과정에서의 리소스 낭비로 인한 분석 속도 저하 및 코드 재사용성 부재가 핵심 병목 지점으로 작용.
Technical Solution
- 별도의 서버 설치 없이 동작하는 단일 바이너리 ClickHouse-local 엔진을 통한 로컬 파일 직접 쿼리 구조 설계
- file() 함수 기반의 자동 포맷 탐지 및 스키마 추론 메커니즘을 활용한 데이터 로딩 단계 생략
- toFloat64OrNull 등 특수 함수를 통한 데이터 클렌징과 분석 쿼리를 인라인으로 통합하여 전처리 파이프라인 단순화
- Glob 패턴 기반의 다중 파일 통합 쿼리를 통해 폴더 단위 데이터 집계 효율 극대화
- 분석 빈도가 높은 데이터의 경우 CSV를 Parquet 포맷으로 변환하여 Columnar 스토리지의 성능 이점 확보
- 로컬 분석 쿼리를 그대로 프로덕션 ClickHouse 클러스터로 이관 가능한 일관된 SQL 엔진 환경 구축
실천 포인트
1. 대용량 CSV 분석 시 pandas 전처리 전 ClickHouse-local의 빠른 탐색 가능성 검토
2. 데이터 타입 불일치 해결을 위해 *OrNull 계열 함수를 활용한 인라인 클렌징 적용
3. 반복 쿼리가 필요한 정적 파일은 즉시 Parquet 포맷으로 변환하여 I/O 비용 절감
4. 로컬 분석 쿼리가 프로덕션으로 확장될 가능성을 고려한 SQL 표준 준수 및 엔진 선택