주요 컨텐츠로 이동

파케이 (Parquet)

Databricks 무료로 시작하기

Parquet란 무엇입니까?

Apache Parquet는 효율적인 데이터 스토리지와 검색을 지원하도록 설계되었으며, 컬럼 중심의 오픈 소스 데이터 파일 형식입니다. 복잡한 데이터를 일괄적으로 처리하는 기능을 더욱 향상하여 효율적인 데이터 압축 및 인코딩 방식을 제공합니다. Apache Parquet는 배치 및 인터랙티브 워크로드에 공통적인 상호 교환 형식을 제공하도록 설계되었습니다. 하둡에서 제공하는 다른 컬럼형 스토리지 파일 형식(즉, RCFile 및 ORC)과 유사합니다.

Parquet의 특징

  • 무료 오픈 소스 파일 형식을 사용합니다.
  • 언어를 가리지 않습니다.
  • 컬럼 기반 형식 - 파일이 행이 아니라 열로 구성되어, 스토리지 공간이 절약되고 분석 쿼리 속도가 향상됩니다.
  • 분석(OLAP) 사용 사례, 그중에서도 기존의 OLTP 데이터베이스와 함께 사용하는 사용 사례에 사용됩니다.
  • 데이터 압축과 해제의 효율이 매우 높습니다.
  • 복잡한 데이터 유형과 고급 중첩 데이터 구조를 지원합니다.

Parquet의 장점

  • 모든 종류의 빅데이터를 저장하는 데 적합합니다(구조적 데이터 테이블, 이미지, 동영상, 문서).
  • 매우 효율적인 컬럼 전체 압축 방식, 그리고 다양한 데이터 유형의 컬럼에 대한 유연한 인코딩 방식을 사용하여 클라우드 스토리지 공간에 저장합니다.
  • 데이터 건너뛰기 등의 기술을 사용하여 데이터 처리량과 성능을 높였습니다. 따라서 특정 컬럼 값을 가져오는 쿼리는 전체 데이터 행을 읽을 필요가 없습니다.

Apache Parquet는 레코드 조각내기 및 조립 알고리즘을 사용하여 구현합니다. 여기에는 데이터 저장에 사용할 수 있는 복잡한 데이터 구조가 포함됩니다. Parquet는 복잡한 데이터를 대량으로 다루는 데 최적화되어 있으며 다양한 방식을 동원해 효율적인 데이터 압축과 인코딩 유형을 제공합니다. 이 방식은 특히 대규모 테이블에서 특정 컬럼을 읽어야 하는 쿼리에 가장 좋습니다. Parquet는 필요한 컬럼만 읽으므로 IO가 대폭 최소화되기 때문입니다.

데이터를 컬럼 형식으로 저장하면 좋은 점:

  • Apache Parquet와 같은 컬럼 형식 스토리지는 CSV와 같은 행 기반 파일에 비해 효율성을 개선하기 위해 고안한 것입니다. 컬럼 형식 스토리지는 쿼리할 때 개연성이 없는 데이터는 아주 신속하게 건너뛸 수 있습니다. 따라서 집계 쿼리를 수행할 때 행 중심 데이터베이스에 비해 시간이 적게 걸립니다. 이런 방식의 스토리지를 이용하면 하드웨어를 절약할 수 있고 데이터 액세스를 위한 레이턴시를 최소화할 수 있습니다.
  • Apache Parquet는 아무것도 없는 상태에서 처음부터 새롭게 구축한 것입니다. 따라서 고급 중첩 데이터 구조를 지원할 수 있습니다. Parquet 데이터 파일의 레이아웃은 각각의 파일마다 기가바이트급에 달하는 대량의 데이터를 처리하는 쿼리에 최적화되어 있습니다.
  • Parquet는 유연한 압축 옵션과 효율적인 인코딩 방식을 지원하도록 구축되어 있습니다. 각 컬럼의 데이터 유형이 무척 비슷하기 때문에, 각 열을 압축하기도 간단합니다(그래서 쿼리 속도가 한층 더 빨라짐). 데이터를 압축하려면 이용 가능한 여러 코덱 중 하나만 사용하면 됩니다. 따라서 여러 가지 데이터 파일을 서로 다른 방식으로 압축할 수 있습니다.
  • Apache Parquet는 AWS Athena, Amazon Redshift Spectrum, Google BigQuery와 Google Dataproc과 같은 인터랙티브, 서버리스 기술과 함께 쓰면 가장 효과가 좋습니다.

Parquet와 CSV의 차이점

CSV는 Excel, Google Sheets 등의 다양한 여러 도구를 사용하는 간단한 공통적 형식입니다. CSV 파일이 데이터 처리 파이프라인의 기본 형식은 아니지만, 몇 가지 장점이 있는 것은 사실입니다.

  • Amazon Athena와 Spectrum의 경우 쿼리당 스캔한 데이터의 양을 근거로 요금을 부과합니다.
  • Google과 Amazon에서는 GS/S3에 저장된 데이터 양에 따라 사용료를 부과합니다.
  • Google Dataproc의 요금제는 시간 기반입니다.

Parquet는 대규모 Dataset의 스토리지 요구사항을 최소 1/3 줄여준 데다가 스캔과 역직렬화에 걸리는 시간을 대폭 개선하여, 결과적으로 전체 비용이 크게 절감해주는 효과를 냈습니다. 다음 표는 데이터를 CSV에서 Parquet로 변환하면 얻을 수 있는 속도 개선과 절약 효과를 정리한 것입니다.

Dataset

Amazon S3에서 크기

쿼리 런타임

스캔한 데이터

비용

CSV 파일로 저장한 데이터

1TB

236초

1.15TB

$5.75

Apache Parquet 형식으로 저장한 데이터

130GB

6.78초

2.51GB

$0.01

절약분

Parquet 사용 시 87% 더 적음

34배 빠름

스캔한 데이터양 99% 적음

99.7% 절약

Parquet 및 Delta Lake

오픈 소스 Delta Lake 프로젝트는 Parquet 형식을 기반으로 개발하고, 이를 확장합니다. 이 과정에서 클라우드 개체 스토리지의 ACID 트랜잭션, 시간 이동, 스키마 전개, 단순 DML 명령(CREATE/UPDATE/INSERT/DELETE/MERGE) 등의 추가 기능을 추가합니다. Delta Lake는 순서가 정렬된 트랜잭션 로그를 사용하여 여러 가지 중요한 기능을 구현합니다. 이 로그를 통해 클라우드 개체 스토리지에서 데이터 웨어하우징 기능을 지원합니다. Databricks 블로그 게시물 Delta Lake 심층 분석: 트랜잭션 로그 파헤치기에서 자세히 알아보세요.

추가 자료

용어집으로 돌아가기