본문 바로가기

빅데이터

빅데이터에서 사용하는 포멧 종류 및 설명

빅데이터를 다루다보면 다양한 file format을 만나게 됩니다. 오늘 포스팅에서는  file format들에 대해 알아보도록 하겠습니다.


Delimiter separated file

가장 많이 쓰이는 raw text기반의 구분문자로 이루어진 배열입니다. 아래와 같이 평문으로도 저장, 조회할 수 있습니다. 아래는 콤마(,)로 구분자를 지정한 CSV(comma-separated values)의 예제를 보여줍니다.

직업,이름,날짜,성별,지역
학생,David,20190204,M,USA
사업가,James,20180305,M,Canada

비슷한 포멧은 아래와 같은 방식들이 있습니다.

- TSV : tab separated value

- SSV : space separated value

 

위와 같은 방식들을 모두 합쳐 CSV(Character separated value) 라고도 부릅니다. 평문방식이기 때문에 file형식으로 읽어서 data를 손쉽게 append & flush할 수 있습니다.

Apache parquet

아파치 파케이는 나무조각을 붙여놓은 마룻바닥이라는 뜻을 가진 칼럼기반 포맷입니다. 칼럼기반 포맷은 파일 크기와 쿼리 성능 측면 모두 효율성이 높습니다. 동일한 칼럼의 값을 나란히 모아서 저장하기 때문에 CSV와 같은 로우(row)단위 포맷에 비해 크기가 작습니다.

example : 타임스탬프 컬럼을 저장할 때 첫번째 값과 다음 값의 차이를 저장하는 방법으로 인코딩

파케이를 생성하고 읽기 위해서는 Spark 혹은 parquet관련 library를 사용한 application이 필요합니다. 이런 애플리케이션/library는 아파치 파케이에서 정의한 파케이에 대한 입출력 명세를 지원합니다. 또한 파케이는 칼럼 기반 포멧이기 때문에 한개의 데이터를 file단위로 읽어서 append & flush하는 것이 불가합니다. append하기 위해서는 파케이 file을 읽어서(메모리에 올려서) row를 append한 뒤에 다시 저장을 반복해야합니다.

Apache ORC

ORC포맷은 하이브의 처리 속도를 높이기 위해 개발된 칼럼기반 포맷이다. 하이브에 특화되어 설계되었기 때문에 pig나 java, impala등 다른 쿼리 엔진과 하이브가 아닌 맵리듀스 인터페이스에서 사용하는 범용 스토리지 포맷은 아니다.