본문 바로가기

IT/Data

빅데이터 저장 시에 파케이(parquet)의 장점

안녕하세요. 잇킹 시도르입니다.

 

AWS를 활용한 빅데이터 프로젝트를 하면서 S3에 저장한 파일을 Athena(Presto 기반 SQL 조회서비스)로 조회하거나, Spark를 이용한 데이터 처리를 했었습니다. 이때 S3에서는 파케이(Parquet)로 저장 포맷을 가져가는 게 유리하다는 것을 알 수 있었습니다. 프로젝트 시에는 유리하다는 것만 알고 사용하기만 했었는데, 유리한 이유에 대해서 알아야 할 듯해서 정리하게 되었습니다.

 

파케이는 컬럼 기반으로 저장하는 파일 포맷 중에 하나입니다. 파케이 외에도 ORC라고 하는 파일 포맷도 존재합니다. ORC는 하이브에 최적화된 포맷이고, 파케이는 Spark에 최적화된 포맷이라고 합니다.

 

그렇다면 빅데이터에서 컬럼 기반의 파일 포맷이 인기 있는 이유가 무엇일까요?

빅데이터 처리는 분산 처리를 기본으로 하며 각 노드에 저장된 파일을 빨리 읽는 게 중요합니다. 그러므로 파일의 크기가 작을수록, 그리고 필요한 데이터 컬럼만 읽을 수 있다면 더 좋겠죠. 바로 이것이 컬럼기반의 파일 포맷의 장점이라 할 수 있습니다.

 

예를 들어, 다음과 같은 데이터셋이 있다고 가정하겠습니다.

기존의 행 기반의 포맷은 저장 시에 다음과 같은 형태로 저장하게 됩니다.

1001,시도르,책임,010-111-1111

1002,썬미,선임,010-222-2222

1003,잇킹,사원,010-333-3333

1004,썬자,책임,010-444-4444

 

반면에 컬럼 기반의 포맷은 저장 시에 직렬화 구조가 다음과 같죠.

1001,1002,1003,1004

시도르,썬미,잇킹,썬자

책임,선임,사원,책임

010-111-1111,010-222-2222,010-333-3333,010-444-4444

그리고 각각을 매칭할 수 있는 포인터를 갖는다고 합니다.

 

이렇게 같은 컬럼끼리 직렬화돼서 저장하게 되면 다음과 같은 장점이 있습니다. 

 

1. 파일 크기가 적다.

직렬화된 컬럼은 모두 같기 때문에 하나의 타입을 가집니다. 그래서 행 기반에서는 이용할 수 없던 압축 방식을 적용해서 압축률이 좋다고 합니다. 그래서 파일 크기가 적어지는 거죠.

 

2. 필요한 컬럼만 읽을 수 있다.

데이터를 읽어야 할 때 행 기반 포맷에서는 원하는 컬럼 값이 있는 데이터 행 전체를 읽어야 합니다. 이는 빅데이터를 처리하게 될 시에 광범위한 데이터 블록을 검색하게 되면서 큰 낭비를 가져오게 됩니다. 

반면에 컬럼 기반의 포맷의 경우는 내가 필요한 컬럼만 스캔하게 되므로 I/O 사용률이 낮으며 행 기반 포맷에 비해서 성능이 더 좋게 됩니다.

 

이런 특징들로 인해서 빅데이터 처리에서는 컬럼 기반의 파일 저장 포맷이 우수하다는 것을 알 수 있었습니다.

 

감사합니다.

'IT > Data' 카테고리의 다른 글

빅데이터 기본 용어 정리  (0) 2020.01.29
DBMS별 Schema(스키마) 와 Database와 차이점  (2) 2020.01.23
데이터에서 최종 일관성이란?  (0) 2020.01.21