Pybites Podcast 197: Polars with Jeroen Janssens and Thijs Nieuwdorp
- Polars는 Jeroen Janssens와 Thijs Nieuwdorp가 공동 저술한 O'Reilly의 "Python Polars: The Definite Guide"의 주제로, Richie Vink가 개발한 고성능 데이터 처리 라이브러리입니다. 📚
- 저자들은 Polars의 압도적인 성능과 직관적인 API에 매료되어 책을 쓰게 되었으며, 특히 Thijs의 벤치마크는 30초 걸리던 계산을 1초로 단축시키는 놀라운 결과를 보여주었습니다. ⚡
- 실제 프로젝트에서 Polars는 R과 Pandas로 구성된 대규모 ETL 파이프라인을 재작성하여 700GB 이상의 RAM 사용량을 줄이고, 6개월에 한 번 하던 작업을 매주 수행 가능하게 만들었습니다. 📈
- Polars의 핵심 강점은 "속도 때문에 왔다가 API 때문에 머무른다"는 말처럼, Rust 기반의 병렬 처리와 선언적(declarative) API 디자인에 있습니다. 🚀
- Pandas와 달리 Polars는 표현식(expressions)을 중심으로 일관된 구문을 제공하며, 데이터프레임 메서드 전반에 걸쳐 재사용 가능한 작은 레시피들을 구축할 수 있어 코드 가독성과 유지보수성이 뛰어납니다. ✨
- Polars의 놀라운 속도는 Rust로 작성된 코어 엔진이 멀티 스레딩을 활용하여 여러 CPU 코어에서 작업을 병렬 처리하고, 지연 실행(lazy execution) 방식을 통해 불필요한 연산을 최소화하기 때문입니다. 🏎️
- 지연 실행은 모든 작업을 미리 계획한 후 실행함으로써, 필요한 컬럼만 읽거나 필터를 초기에 적용하는 등 최적화를 가능하게 하여 상당한 성능 향상을 가져옵니다. 🧠
- Polars는 Apache Arrow의 컬럼형 인메모리 포맷을 기반으로 하여 데이터 저장 및 처리 효율성을 극대화하며, 이는 Wes McKinney(Pandas 개발자)가 데이터 유형을 메모리에 저장하는 방식에 대한 사양으로 개발했습니다. 🏹
- 초기에는 클라이언트의 도입 주저가 있었으나, Thijs의 벤치마크 결과가 강력한 설득 도구가 되어 결국 전체 파이프라인을 Polars로 전환하는 데 성공했습니다. 🤝