본문 바로가기
Data

Parquet란 무엇이고, 왜 사용하는가 | LIM

by forestlim 2023. 2. 3.
728x90
반응형

Parquet (파케이)

 

데이터를 저장하는 방식 중 하나로 하둡생태계에서 많이 사용되는 파일 포맷이다. 

빅데이터를 처리할 때는 많은 시간과 비용이 들어가기 때문에

빠르게 읽고, 압축률이 좋아야 한다. 이러한 특징을 가진 파일 포맷으로는 Parquet(파케이), ORC, Avro(에이브로)가 있다. 

 

📝 파케이가 압축률이 좋은 이유: 컬럼기반 저장포맷이기 때문

먼저, 컬럼기반이 무엇인지 알아보자. 

데이터베이스를 예시로 들면, 행 기반으로 저장하는 방식(대표적으로 MySQL)과 열 기반(대표적으로 BigQuery)으로 저장하는 방식이 있다. 

다음과 같은 데이터베이스가 있다고 할 때

행 기반으로 저장되는 건 다음과 같이 저장되고,

열 기반으로 저장되는 건 아래와 같이 저장된다.

 

열 기반으로 저장되는 것이 압축률이 더 좋은 이유는 다음과 같이 설명할 수 있다. 

같은 컬럼에는 종종 유사한 데이터가 나열된다. 특히 같은 문자열의 반복은 매우 작게 압축할 수 있다. 데이터의 종류에 따라 다르지만, 열 지향 데이터베이스는 압축되지 않은 행 지향 데이터 베이스와 비교하면 1/10 이하로 압축 가능하다. 

데이터 분석에서는 종종 일부 칼럼만이 집계 대상이기 때문에, 이렇게 열 기반으로 압축하면 필요한 칼럼만을 빠르게 읽고 집계할 수 있다.

 

 

🤔 그렇다면 열 기반으로만 저장하는게 좋은 거 아닌가?

위와 같은 궁금증이 들 수 있는데 MySQL 의 경우 대표적인 행 기반 저장 방식의 데이터베이스이다. 

행 기반 데이터베이스는 매일 발생하는 대량의 트랜잭션을 지연 없이 처리하기 위해 데이터 추가를 효율적으로 할 수 있도록 하는 것이 행 지향 데이터베이스의 특징이다. 

 

새로운 레코드를 추가할 경우 끝부분에 추가되기 때문에 고속으로 쓰기가 가능하다. 

 

 

🤩 파케이의 장점을 알아보자!

  • 위에서 설명한대로 칼럼단위로 압축하기 압축률이 좋다.
    • 이렇게 되면 파일의 크기도 작아지기 때문에 용량을 덜 차지하게 된다.
  • 디스크 IO 가 적다. 데이터를 미리 칼럼 단위로 정리해 둠으로써 필요한 칼럼만을 로드하기 때문

 

📚 Parquet 는 내부적으로 어떻게 생겼을까

Parquet File Structure로 검색했을 때 대표적으로 나오는 사진이다.

많이 보긴 했는데 하나하나 분석해보는 건 이번이 처음이다..

 

파케이 파일은 헤더, 하나 이상의 블록, 꼬리말 순으로 구성된다. 

헤더는 파케이 포맷의 파일임을 알려주는 4바이트 매직 숫자인 PAR1 만 포함하고 있다. 

파일의 모든 메타데이터는 꼬리말(Footer) 에 저장된다. 

 

파케이 파일의 각 블록은 행 그룹을 저장한다. 행 그룹은 행에 대한 칼럼 데이터를 포함한 칼럼 청크로 되어 있다. 

각 컬럼 청크의 데이터는 페이지에 기록된다. 

각 페이지는 동일한 칼럼의 값만 포함하고 있다. 따라서 페이지에 있는 값은 비슷한 경향이 있기 때문에 페이지를 압축할 때 매우 유리하다. 

데이터의 가장 최소 단위인 페이지에는 동일 칼럼의 데이터만 존재한다. 

그래서 인코딩/ 압축을 할 때, 페이지 단위로 수행하면 된다. 

 

 

항상 Parquet 파일을 써왔지만 내부적으로 어떻게 구성되어 있고 어떻게 압축되는지는 이번에 처음이었다. 

다음 포스팅에는 Parquet 파일로 어떻게 변환하고 저장하며 어떤 데이터 타입을 저장할 수 있는지 정리해야겠다!

 

📚 참고

https://pearlluck.tistory.com/561

 

🌲Parquet(파케이)란? 컬럼기반 포맷 장점/구조/파일생성 및 열기

어떻게 알게 되었나? 보통 수집한 데이터들은 정형데이터, 비정형데이터에 따라 RDB나 NoSQL로 저장했다. 그런데 데이터레이크를 만들면서 객체스토리지인 s3에 데이터를 저장해야했다. 사실 처음

pearlluck.tistory.com

https://devidea.tistory.com/92

 

Parquet (파케이)

이번 글은 하둡 생태계에서 많이 사용되는 파일 포맷인 Parquet (이하 파케이)에 대해 정리한다. 글의 포함된 설명 중 많은 부분은 하둡 완벽 가이드에서 발췌한 것임을 밝힌다. 파케이는 columnar 저

devidea.tistory.com

 

728x90
반응형

댓글