Hive는 Hadoop 용 데이터웨어 하우스 데이터베이스이며 모든 데이터베이스 및 테이블 데이터 파일은 기본적으로 /user/hive/warehouse HDFS 위치에 저장되며, 기타 Hadoop 호환 파일 시스템의 사용자 지정 위치에 Hive 데이터웨어 하우스 파일을 저장할 수도 있습니다.

 

Hive를 사용할 때, 2 개의 서로 다른 데이터 저장소에 대해 알아야합니다.

  • Hive Metastore
  • Hive Data warehouse Location (실제 테이블 데이터가 저장된 위치)

 

Hive Metastore


Hive Metastore는 데이터베이스 및 테이블에 대한 Meta 데이터를 저장하는 데 사용되며 기본적으로 Derby 데이터베이스를 사용합니다. 이것을 MySQL 및 Postgress 등과 같은 RDBMS 데이터베이스로 변경할 수 있습니다. 기본적으로 Metastore 데이터베이스 이름은 metastore_db입니다.

 

Hive Table Location (Hive Data warehouse)


Hive는 기본적 /user/hive/warehouse으로 HDFS 파일 시스템의 위치에 테이블 파일을 저장 합니다. Hive를 사용하기 전에 HDFS에서 이러한 디렉터리를 만들어야합니다.

 

이 위치에서 사용자가 만든 모든 데이터베이스의 디렉터리와 사용하는 테이블 이름이있는 하위 디렉터리를 찾을 수 있습니다.

 


 

1. 속성에서 스토리지 경로 가져 오기

위치가 다른 경우 hive.metastore.warehouse.dir속성 에서 경로를 가져올 수 있으며 Hive Beeline CLI터미널 에서 다음 명령을 실행하여 가져올 수 있습니다 .

set hive.metastore.warehouse.dir;
hive.metastore.warehouse.dir=/user/hive/warehouse

 

2. 구성 파일에서 스토리지 경로 가져 오기

$HIVE_HOME/conf/hive-site.xml파일 에서 hive.metastore.warehouse.dir 속성 값을 찾아 경로를 가져올 수도 있습니다.

 

3. Hive 명령 사용해서 경로 가져 오기

아래 명령을 실행하여 테이블의 하이브 스토리지 경로를 가져올 수도 있습니다.

hive -S -e "DESCRIBE FORMATTED table_name;" | grep 'Location' | awk '{ print $NF }'

테이블 위치는 SHOW CREATE TABLE하이브 터미널에서 명령을 실행하여 가져올 수도 있습니다 .

SHOW CREATE TABLE table_name;
(or)
DESCRIBE FORMATTED table_name;

 

4. Hive 테이블 파티션 위치

Hive에 파티션 된 테이블 이 있고 각 파티션 파일의 위치가 다른 경우 아래 명령을 사용하여 HDFS에서 각 파티션 파일 위치를 가져올 수 있습니다 .

DESCRIBE FORMATTED db_name.table_name PARTITION (name=value)

 

 


Reference

[1] https://cwiki.apache.org/confluence/display/Hive/Home#Home-HiveDocumentation

+ Recent posts