[Hive] Internal Table & External Table

Hyerim Lee·2023년 8월 24일
1

Data Engineering

목록 보기
2/4

Hive에는 internal table과 external table 두 가지 유형의 테이블이 있습니다.

파악한 바로는 table drop 시 관련 데이터가 같이 삭제되는지/삭제되지 않는지만 차이가 존재하는데, 혹시 다른 차이점을 아신다면 댓글로 남겨주세요~!

Internal or Managed Table (내부 테이블)

  • internal(managed) table은 말 그대로 관련 데이터를 내부에서 관리하는 테이블입니다.
  • 테이블 생성 시 location이 hive.metastore.warehouse.dir 속성이 가리키는 directory가 됩니다.
    • 기본적으로 /user/hive/warehouse/databasename.db/tablename/
    • location 속성을 통해 테이블의 위치를 변경해줄 수 있습니다.
  • 테이블을 삭제하면 관련 데이터 및 메타스토어 데이터가 모두 삭제됩니다.
-- internal table 생성
create table sample_internal_table (
	name string
	, age int
)

External Table (외부 테이블)

  • 반면 external table은 외부 데이터를 바라보는 테이블입니다.
  • 데이터 위치를 따로 설정해주어야 하며 따로 location을 설정하지 않으면, internal table 로직과 동일하게 location이 설정됩니다.
  • 테이블을 drop 하더라도 관련 데이터는 삭제되지 않고, 메타스토어 데이터만 삭제됩니다.
  • 같은 원본 테이블을 바라보는 table이 많거나 중요한 파일일 때는 external table을 사용하는 것이 좋습니다.
-- external table 생성
create external table sample_external_table (
	name string
	, age int
) location '/file/path/some/where';

Internal Table을 External Table로 변환

  • table의 유형을 변경하고 싶다면 다음 명령어로 쉽게 변경할 수 있습니다.
profile
Data Analyst

0개의 댓글