Hadoop EcoSystem

[Hive] 테이블 - 개념 및 유형

비번변경 2024. 1. 18. 18:17

개요

2024.01.17 - [Hive] 데이터베이스에 이어 이번 글에서는 Hive 테이블 개념에 대해 정리한다.

 

 

테이블

Hive에서 테이블은 HDFS에 저장된 파일과 디렉터리 구조에 대한 메타 정보라고 할 수 있다. 실제 파일의 구조에 대한 정보와 저장 위치, 입력 형식, 출력 형식, 파티션 정보 등 여러 정보를 포함한다.

 

테이블은 CREATE 문으로 생성할 수 있다.

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
  [(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
     [STORED AS DIRECTORIES]
  [
   [ROW FORMAT row_format] 
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
  ]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
  [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)

 

예시 ) Parquet 파일

CREATE EXTERNAL TABLE tb_sample(
    col1 STRING,
    col2 INT
    )
STORED AS PARQUET
LOCATION '/file/path/some/where';

 

 

저장 위치

데이터베이스와 비슷하게 테이블도 생성 시 LOCATION 절을 이용해 데이터의 저장 위치를 지정할 수 있다. 

CREATE EXTERNAL TABLE tb_sample(
    col1 STRING,
    col2 INT
    )
ROW FORMAT DELIMITED
        FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/file/path/some/where';

 

 

테이블 유형

HIve 테이블 유형은 MANAGED, EXTERNAL, TEMPORARY가 존재한다.

 

MANAGED

Hive에서 테이블을 생성하면 기본적으로 Managed 테이블로 생성된다. 세션이 종료돼도 테이블 데이터와 파일이 유지된다.

Managed 테이블은 테이블의 데이터를 Hive가 소유하고 있다고 가정한다. 즉, Hive 명령으로만 데이터와 데이터 속성, 데이터 레이아웃을 변경할 수 있다. 또한 테이블을 DROP하면 파일도 함께 삭제되니 주의해야 한다.

Hive가 테이블의 수명주기를 관리해야 하거나 임시 테이블을 생성할 때 사용한다.

 

EXTERNAL

External 테이블은 외부 파일의 스키마를 설명하는데, 파일 삭제 정책을 제외하면 Managed 테이블과 동일하다. 즉, 테이블을 DROP해도 파일은 삭제되지 않는다.

파일이 원격지에 위치한 경우에 사용한다.

 

TEMPORARY

TEMPORARY 옵션을 사용하면 현재 세션에서만 사용하는 테이블을 생성한다. 세션이 종료되면 제거되므로 임시 테이블 목적으로 사용한다.

 

 

 

참고 문서

https://wikidocs.net/23469

https://moons08.github.io/programming/Hive_Table/

https://cwiki.apache.org/confluence/display/Hive/Managed+vs.+External+Tables