데이터 전처리: 데이터 프레임과 SQL – Dask
ㅁ 데이터 프레임과 SQL
ㅇ 정의:
대규모 데이터 처리를 위해 병렬 및 분산 처리를 지원하는 파이썬 기반 라이브러리로, Pandas와 유사한 DataFrame API를 제공하지만 메모리에 올리지 않고도 데이터를 처리할 수 있음.
ㅇ 특징:
– Lazy evaluation(지연 계산) 방식으로 필요 시 연산 수행
– 클러스터 환경에서 병렬 처리 가능
– Pandas, NumPy, Scikit-learn 등과 호환성 높음
– 데이터 크기가 메모리보다 큰 경우에도 처리 가능
ㅇ 적합한 경우:
– 수십 GB~TB급 데이터 처리
– 로컬 메모리 한계를 초과하는 데이터셋 분석
– 분산 환경에서 데이터 전처리 및 집계 작업
ㅇ 시험 함정:
– Dask는 실시간 스트리밍 처리를 위한 도구가 아님 (Spark Streaming과 혼동 주의)
– 모든 Pandas 기능을 100% 지원하지 않음
– Lazy evaluation으로 인해 즉시 결과가 나오지 않을 수 있음
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Dask는 메모리에 올리지 않고도 대규모 데이터를 처리할 수 있다.”
X: “Dask는 모든 Pandas 기능을 동일하게 지원하며 즉시 결과를 반환한다.”
ㅁ 추가 학습 내용
Dask는 내부적으로 태스크 그래프 기반으로 동작하며, 연산을 작은 태스크 단위로 나누어 의존성에 따라 실행한다. DataFrame뿐 아니라 Bag, Array 등 다양한 자료구조를 지원하여 데이터 형태와 처리 목적에 맞게 선택할 수 있다. 연산은 지연 평가(lazy evaluation) 방식으로 진행되며, compute() 함수를 호출해야 실제 계산이 수행된다. Dask-SQL을 활용하면 SQL 문법으로 Dask 데이터를 질의할 수 있다. 단일 머신 환경과 분산 클러스터 환경 간 전환이 용이하여 확장성이 높다. 스케줄러는 threads, processes, distributed 등이 있으며, CPU 연산 병렬화나 I/O 병목, 분산 환경 여부에 따라 적절히 선택한다. Pandas 대비 성능 차이는 데이터 크기, 연산 유형, 병렬화 가능성 등에 따라 달라지며, 최적화 방법으로는 적절한 파티션 크기 조정, 불필요한 데이터 변환 최소화, 효율적인 스케줄러 선택 등이 있다.