Parquet¶
Parquet 는 하둡의 컬럼방식의 저장 포맷입니다. Parquet 는 프로그래밍 언어, 데이터 모델, 혹은 데이터 처리 엔진에 관계 없이 하둡 에코시스템에 속하는 프로젝트에서 컬럼방식으로 저장된 데이터에 대한 효율적인 저장과 처리성능 향상을 도모하기 위하여 만들어졌습니다. 자세한 내용은 Parquet File Format 를 참고해 주세요.
Tajo에서 어떻게 Parquet 저장 포맷을 사용한 테이블을 만드나요?¶
아직 CREATE TABLE 선언문에 익숙하지 않으시다면, 데이터 정의 언어 (DDL, Data Definition Language) 데이터 정의 언어 (DDL, Data Definition Language) 을 참고해 주세요.
여러분의 테이블에 특정한 타일 포맷을 지정하시고 싶으시다면. CREATE TABLE 선언에 USING 절을 사용하시면 됩니다. 아래의 예제는 Parquet 포맷으로 테이블을 작성하는 방법을 설명합니다.
CREATE TABLE table1 (
id int,
name text,
score float,
type text
) USING PARQUET;
물리적 속성들¶
몇몇 테이블 저장 포맷은 테이블의 물리적 속성을 조정할 수 있는 기능을 허용하거나 허용하지 않도록 설정할 수 있는 파라메터를 제공합니다. CREATE TABLE 선언문에 WITH 절을 사용하여 여러 파라메터들을 설정할 수 있습니다.
아래에 Parquet 저장 포맷의 여러가지 물리적 속성과 자세한 설명을 기술하였습니다.
- parquet.block.size: 메모리에 버퍼링 될 로우 그룹의 크기에 대한 속성입니다. 이를 통해 쓰기를 수행할 때 사용 가능한 메모리의 양을 제한할 수 있습니다. 큰 값을 지정하실수록 메모리를 많이 소비하지만 I/O성능을 향상시키실 수 있습니다. 기본적으로 134217728 바이트 (= 128 * 1024 * 1024) 로 지정되어 있습니다.
- parquet.page.size: 압축을 위한 페이지 크기에 대한 속성입니다. 읽기의 경우 각각의 페이지들은 독립적으로 압축을 풀게 되어있습니다. 하나의 블록은 여러개의 페이지로 구성되어 있으며 페이지는 하나의 레코드를 완전히 읽기 위한 가장 작은 단위입니다. 만약 이 속성값이 너무 작다면, 압축으로 인해 오히려 성능이 더 나빠질 것입니다. 기본값으로 1048576 바이트 (= 1 * 1024 * 1024) 가 설정되어 있습니다 .
- parquet.compression: 페이지를 압축하기 위한 압축 알고리즘을 설정하는 속성입니다. uncompressed, snappy, gzip, lzo 중에서 하나의 알고리즘을 선택하시면 됩니다. 기본적으로 uncompressed 로 설정이 되어 페이지에 대한 압축을 수행하지 않습니다.
- parquet.enable.dictionary: 불리언 값으로 dictionary encoding의 수행 여부를 설정합니다. true 혹은 false``의 값 중 하나로 설정 되어있어야 하며, 기본값으로 ``true 가 설정되어 있습니다.