
백엔드
Polars로 데이터 처리를 더 빠르고 가볍게 with 실무 적용기
두줄요약
Pandas와 Spark 사이의 대체제로 Polars를 검토한 실무 적용 경험을 소개했습니다. Lazy API와 streaming으로 메모리와 실행 시간을 크게 줄인 사례를 공유했습니다.
핵심 내용
- 배달시간예측서비스팀의 데이터 처리 작업에서 Pandas는 느리고 메모리 소모가 크며, Spark는 러닝 커브와 비용 부담이 커서 대체 도구를 탐색
- Ray, Dask, Modin, vaex, Numba 등을 검토했지만 데이터 처리 목적, 성능, 운영 편의성 측면에서 한계가 있어 Polars를 후보로 선택
- Polars는 Rust 기반, Apache Arrow 기반, 다양한 IO 지원, Lazy API, Streaming API를 통해 단일 머신에서도 빠르고 가벼운 데이터 처리를 지향
- 실험에서는 Parquet 읽기와 집계 처리에서 Pandas보다 훨씬 적은 메모리와 짧은 실행 시간을 보였고, streaming 적용 시 더 큰 데이터도 처리 가능
적용해볼 점
- GB 단위 데이터의 로컬 처리나 후속 피처 엔지니어링에 Polars 검토
- Lazy API와 streaming 옵션을 조합해 메모리 사용량과 실행 시간 최적화
- SQL 유사 문법과 칼럼 선택 편의성을 활용해 데이터 처리 코드 단순화
