IT 삽질기

Hive managed table과 external table 본문

BigData/Hadoop

Hive managed table과 external table

화이팅빌런 2021. 8. 2. 23:57

이번 글에서는 hive의 managed table와 external table에 대해 알아보도록 하자.

hive에서는 hive에서 생애주기를 관리하는 managed table과 그렇지 않은 external table를 생성해서 사용할 수 있다.

각각 어떻게 무엇인지 알아보도록 하자.

Managed table

먼저 Managed table는 hdfs상 hive.metastore.warehouse.dir 경로에 존재하며 해당 디렉터리 하위에 테이블의 데이터가 저장되게 된다. 예를 들어 hive.metastore.warehouse.dir의 설정값이 /apps/hive/managed로 설정되어 있다면 managed table의 경로는 /apps/hive/managed의 하위가 되고, 일반적인 방법으로 테이블을 생성하면 해당 경로에 테이블이 만들어지고 테이블을 삭제하는 경우 hdfs 경로에 있는 데이터 역시 함께 삭제된다.

External table

External table의 경우는 어떨까 External table의 경우 앞서 Managed table와 다르게 hive.metastore.warehouse.dir 경로에 생성되지 않으며, 테이블을 만들 때 Location을 지정해서 만들어 설정할 수 있다.

external table를 만드는 query문은 아래와 같은 형식이다.

CREATE EXTERNAL TABLE(
    id STRING,
    pw STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/users/dydwnsekd';

위와 같은 query를 이용해 테이블을 만들면 table의 location은 /users/dydwnsekd에 생성이 되며 ,로 구분된 데이터 파일을 읽어 table형식으로 사용할 수 있다. 이렇게 만들어진 External table는 hive에서 테이블을 제거해도 실제 hdfs상에 있는 데이터는 지워지지 않고 그대로 유지된다.

 

이런 External table를 사용하는 이유는 무엇일까?

여러 가지 이유가 있을 수 있겠지만, 다른 시스템과의 연동을 위해서 많이 사용하는 것 같다.

hive는 hadoop에서 사용할 수 있는 다양한 서비스 중 하나일 뿐이고, hive뿐만 아니라 다른 서비스에서도 동일한 데이터에 접근하거나 다른 서비스에서 만들어진 테이블에 접근해야 하는 경우가 발생할 수 있는데 이런 경우 external table를 사용하여 적절한 경로를 지정해주면 데이터를 공유할 때 매우 편리하게 사용할 수 있다.

테이블 형식 확인

사용하고 있는 테이블이 어떤 형식인지는 어떻게 알 수 있을까

아래의 명령어를 통해 확인이 가능하며 tableType를 확인하면 된다.

DESCRIBE EXTENDED [table name]

'BigData > Hadoop' 카테고리의 다른 글

Combiner 함수  (0) 2021.08.18
Namenode safe mode  (0) 2021.07.28
Namenode fsimage, edits log  (0) 2021.07.26
Hadoop Kerberos 인증과정  (0) 2021.06.27
Yarn NodeManager BindException(Close_wait)  (0) 2021.06.25
Comments