빅데이터 세계에 오래 계셨다면, 아마도 Parquet 파일에 대해 들어보셨을 것입니다. 심지어 "왜 CSV 파일을 그냥 쓰지 못하지?"라고 생각하면서도 사용했을 것입니다. 오늘은 Parquet 파일의 미스터리를 밝히고, 점점 더 많은 데이터 과학자들이 CSV 파일보다 Parquet 파일을 선호하는 이유를 설명하겠습니다.
예시부터 시작해 보겠습니다. 100개의 열과 수백만 행이 있는 데이터셋이 있다고 가정해 봅시다(이러한 데이터셋은 빅데이터 분야에서 흔합니다). 하지만 데이터 분석 프로젝트에서는 5개의 열만 추출하면 됩니다. 또한, 특정 기준에 맞지 않는 행은 필터링해야 합니다. 데이터 저장 형식에는 세 가지 옵션이 있습니다: CSV, ORC, 그리고 Parquet.
CSV는 데이터를 저장하는 데 가장 널리 사용되는 파일 형식 중 하나입니다. 이 형식은 행 단위로 데이터를 저장하는데(아래 이미지에서 볼 수 있듯이), 즉 행을 차례로 저장합니다. 이러한 구조는 행을 쉽게 정렬할 수 있어 행 선택에 매우 유용합니다. 하지만 열 선택에 관해서는 CSV 파일에서 데이터를 읽는 것이 비효율적이고 시간이 많이 소요됩니다. 저희의 경우, 10열만 필요하는데도 테이블의 모든 열을 스캔해야 합니다.

두 번째 선택지는 ORC입니다. ORC는 열 지향 데이터 저장 형식입니다. 아래 이미지에서 볼 수 있듯이 데이터를 열에 저장합니다. 따라서 ORC 파일에서 열을 선택하는 과정이 효율적입니다. 그럼에도 불구하고, ORC에서 행 선택은 모든 행을 통해 상호작용해야 하므로 성능이 저하됩니다.

마지막으로, 데이터를 저장할 때 Parquet도 선택할 수 있습니다. Parquet은 하이브리드 기반 데이터 저장 형식입니다. 이 형식은 열형 데이터와 행 기반 데이터 저장 형식의 특성을 결합한 점에서 하이브리드입니다(아래 이미지에 보이듯이). 이 하이브리드 데이터 구조화 방식은 다음과 같습니다: 각 parquet 파일은 여러 행 그룹으로 나뉘며, 각 그룹은 여러 행을 포함합니다. 각 행 그룹은 여러 개의 열 청크로 구성되며, 각 항목은 원래 테이블의 한 열에 해당합니다.

열 선택 측면에서 보면, 각 행 그룹에서 데이터를 수집할 때 관련 없는 열은 쉽게 건너뛸 수 있습니다. 행 선택에 관해서는, Parquet은 행 그룹 내 각 열 청크의 최대값과 최소값을 이용해 원치 않는 행을 건너뛸습니다. 최대 및 최소 값이 주어진 기준을 충족하지 않는 열이 하나 이상 존재하면 행 그룹은 스캔되지 않습니다(아래 이미지에 나타난 것처럼). 위의 열과 행 선택 메커니즘 덕분에 두 차원 모두에서 불필요한 데이터를 스캔하지 않아 Parquet의 최고 수준의 데이터 추출 성능을 얻을 수 있습니다.

위에서 보았듯이, Parquet 파일은 데이터 검색 속도 면에서 CSV 파일보다 더 우수합니다. 그렇다면 Parquet 파일이 시간 복잡도를 줄이기 위해 더 많은 공간을 차지한다는 의미일까요? 답은 아닙니다. 오히려 Parquet 파일은 같은 양의 데이터를 저장할 때 CSV 파일보다 공간을 덜 차지합니다. 그 이유는 Parquet이 런 길이 인코딩, 사전 인코딩, 델타 인코딩 등 다양한 알고리즘을 사용하기 때문입니다.
전반적으로 Parquet 파일은 거의 모든 면에서 CSV 파일보다 우수합니다. 첫째, Parquet의 데이터 선택은 하이브리드 기반(행 기반과 열 기반) 저장 형식 덕분에 더 효율적입니다. 또한 Parquet은 압축 알고리즘 덕분에 공간도 적게 요구합니다. 따라서 효율적인 데이터 처리 시스템을 구축하려는 데이터 과학자라면 Parquet이 반드시 가장 중요한 파일 형식이어야 합니다.
추천 도서: Parquet이란 무엇 (상세 성능 비교) Parquet 파일 형식 이해 하기(압축) Parquet 파일 형식이란 무엇인가요? 사용 사례 및 장점