************************************* Parquet ************************************* Parquet 는 하둡의 컬럼방식의 저장 포맷입니다. Parquet 는 프로그래밍 언어, 데이터 모델, 혹은 데이터 처리 엔진에 관계 없이 하둡 에코시스템에 속하는 프로젝트에서 컬럼방식으로 저장된 데이터에 대한 효율적인 저장과 처리성능 향상을 도모하기 위하여 만들어졌습니다. 자세한 내용은 `Parquet File Format `_ 를 참고해 주세요. ============================================================================= Tajo에서 어떻게 Parquet 저장 포맷을 사용한 테이블을 만드나요? ============================================================================= 아직 CREATE TABLE 선언문에 익숙하지 않으시다면, 데이터 정의 언어 (DDL, Data Definition Language) :doc:`/sql_language/ddl` 을 참고해 주세요. 여러분의 테이블에 특정한 타일 포맷을 지정하시고 싶으시다면. ``CREATE TABLE`` 선언에 ``USING`` 절을 사용하시면 됩니다. 아래의 예제는 Parquet 포맷으로 테이블을 작성하는 방법을 설명합니다. .. code-block:: sql 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`` 가 설정되어 있습니다. ========================================= 아파치 하이브와의 호환성 이슈들 ========================================= 현재 Tajo는 flat한 관계 테이블만을 지원하고 있습니다. 따라서 Tajo의 Parquet 저장 타입은 중첩된 스키마들을 지원하지 않습니다. 그러나, 현재 중첩된 스키마와 비-스칼라 타입들에 대한 지원을 추가하기 위해 관련 사항들에 대한 개발을 진행중입니다. (`TAJO-710 `_).