Hive - 내 표 와 외모 의 차이

1. 내부 표
create table zz (name string , age string) location '/input/table_data';  

주: hive 는 기본적으로 내부 표를 만 듭 니 다.
이 때 hdfs 에 zz 표 의 데이터 저장 소 를 새로 만 듭 니 다.
load data inpath '/input/data' into table zz;  

hdfs 의 / input / data 디 렉 터 리 에 있 는 데 이 터 를 / input / table 로 옮 깁 니 다.data 디 렉 터 리 아래.
zz 표를 삭제 하면 zz 표 의 데이터 와 메타 데이터 정 보 를 모두 삭제 합 니 다. 즉, 마지막 / input / tabledata 에 데이터 가 없습니다. 물론 / input / data 에 서 는 데이터 가 없습니다!
     내부 표를 만 들 때 location 을 지정 하지 않 으 면 / user / hiv / warehouse / 아래 에 표 디 렉 터 리 를 새로 만 들 고 나머지 는 같 습 니 다.
    주: load data 는 데 이 터 를 이전 합 니 다.
2. 외부 테이블
create external table et (name string , age string);  

표 디 렉 터 리 를 / user / hiv / warehouse / 새로 만 듭 니 다 et
load data inpath '/input/edata' into table et;  

hdfs 상 / input / edata / 하의 데 이 터 를 / user / hiv / warehouse / et 아래로 이동 합 니 다.
이 외부 테이블 을 삭제 하면 / user / hiv / warehouse / et 의 데 이 터 는 삭제 되 지 않 지만 / input / edata / 의 데 이 터 는 이전 load 이후 없습니다!
데이터 의 위치 가 바 뀌 었 습 니 다!본질은 load hdfs 의 데이터 일 때 데 이 터 를 이전 합 니 다!
3. 작은 매듭
마지막 으로 Hive 에서 표 와 외부 표 의 차 이 를 요약 합 니 다.
     1. 데 이 터 를 외부 표 로 가 져 올 때 데 이 터 는 자신의 데이터 창고 디 렉 터 리 로 이동 하지 않 았 습 니 다 (location 을 지정 하면). 즉, 외부 표 의 데 이 터 는 스스로 관리 하 는 것 이 아 닙 니 다!내부 표 는 다르다.     2. 내부 표를 삭제 할 때 Hive 는 표 에 속 하 는 메타 데이터 와 데 이 터 를 모두 삭제 합 니 다.외부 테이블 을 삭제 할 때 Hive 는 외부 테이블 의 메타 데이터 만 삭제 하고 데 이 터 는 삭제 하지 않 습 니 다!
     3. 내부 표 나 외부 표를 만 들 때 location 의 효 과 는 같 습 니 다. 표 디 렉 터 리 의 위치 가 다 를 뿐 입 니 다. 게다가 partition 용법 도 마찬가지 입 니 다. 표 디 렉 터 리 아래 에 파 티 션 디 렉 터 리 가 있 을 뿐 입 니 다. load data local inpath 는 로 컬 파일 시스템 의 데 이 터 를 hdfs 에 직접 업로드 하고 location 이 지정 한 위치 에 업로드 합 니 다.없 으 면 hive 기본 설정 데이터 창고 에 업로드 합 니 다.

좋은 웹페이지 즐겨찾기