DEV_희쨔응
[Apache Parquet] 컬럼 기반 압축 파일 Parquet 본문
- Parquet 이란?
Parquet 이란 하둡에서 컬럼 기반으로 압축하여 저장하는 저장 포맷을 말합니다.
열(Column) 기반으로 데이터를 처리하면 행(Row) 기반으로 압축했을 때에 비해 데이터의 압축률이 더 높고
필요한 열의 데이터만 읽어서 처리하는 것이 가능하기 때문에 데이터 처리에 들어가는 지원을 절약할 수 있습니다.
→ 이러한 장점들 때문에 현재 진행중인 프로젝트 초반에는 CSV 파일로 데이터를 처리하다가 현재는 Parquet 파일로 파일 포맷을 변경하여 해당 프로젝트를 진행 중입니다. 확실히 처리속도와 파일크기에 있어서 CSV 파일 보다 큰 차이를 보였습니다. (CSV : 2TB → Parquet : 300GB)
Parquet은 하둡 에코시스템 안에서 언제든지 사용 가능한 데이터 저장 포맷으로, 스파크 SQL은 자동으로 기존의 데이터 스키마를 유지하는 Parquet 파일의 읽기와 쓰기를 지원합니다.
→ 현재 진행중인 프로젝트에서 데이터 추출 및 변환은 Parquet을 지원하는 ETL Tool을 사용하고 있고, 데이터 적재는 Spark를 사용하고 있습니다. Parquet 파일은 기존의 데이터 스키마를 유지하기 때문에 타겟DB에 Load 시 기존 테이블 구조가 생성되는 동시에 데이터가 적재됩니다. (별도의 테이블 생성 작업 불필요)
유사한 파일 형식으로 ORC가 있고, 이도 마찬가지로 압축률이 높고 스키마를 가지고 있으며 처리속도가 빠르다.
ORC는 Hive에 최적화된 형식이고, Parquet은 스파크에 최적화된 형식이라고 보시면 좋을 것 같습니다.
- Parquet 파일을 사용하는 ETL 프로젝트 아키텍처 (그림 필요)
E 데이터 추출 : SAP HANA
T 데이터 변환 : 비식별화 후 Parquet 생성
L 데이터 적재 : GreenPlum (Parquet 파일 적재)
- Parquet 압축 방식
Parquet 은 압축 방식이 다양한데, 현재 진행중인 프로젝트에서는 가장 기본적이고 대표적인 Snappy 압축 방식을 사용하고 있습니다.
Snappy 압축은 Google에서 개발한 '적당히 빠르고 적당히 압축 잘 되는' 라이브러리이고, 대용량의 데이터를 '빠르게 읽고 쓰는데 적합한, 하지만 용량 축소는 잘 되는' 압축 방식입니다.
- Parquet 데이터 건수 확인
데이터 유실 없이 Parquet 파일이 잘 생성되었는지 확인하기 위해 Anaconda, Python, Pyarrow를 설치 및 구성하여 Parquet 파일을 타겟DB에 적재하기 전에 데이터 건수를 검증하고 있습니다.