2016-09-11 6 views
0

색조 -> 하이브 쿼리 브라우저에서 하이브에 외부 테이블을 만들고 내 CSV 파일 중 하나의 데이터를 다음 문을 사용하여로드했습니다.하이브 : 표 데이터가 외부 일 때도 소스 데이터가 하이브 데이터웨어 하우스로 이동합니다.

CREATE EXTERNAL TABLE movies(movieId BIGINT, title VARCHAR(100), genres VARCHAR(100)) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE; 

LOAD DATA INPATH '/user/admin/movie_data/movies' INTO TABLE movies; 

원본 파일 "movies"가 HDFS에서 사라지고 하이브 데이터웨어 하우스로 이동하는 것을 봅니다. 필자는 외부 테이블이 원래 원본 데이터에 대한 링크로만 작동한다는 인상하에 있습니다.

외부 테이블을 소스 데이터와 독립적으로 설정하지 않아야합니까? 테이블을 삭제할 때와 마찬가지로 소스 파일은 계속 유지됩니까? 외부 테이블을 어떻게 만듭니 까?

답변

0

외부 테이블은 테이블을 생성하는 동안 언급 된 hdfs 위치에 데이터를 저장합니다. 따라서 테이블을 생성하는 동안 위치를 제공하지 않으면웨어 하우스 hdfs 폴더가 기본값이됩니다. "use mydatabase_name; show create table mytable_name;"을 실행 해보십시오. 테이블 정의를 가져와 가리키는 위치를 확인하십시오. 기본값이 아닌 다른 hdfs 위치가 필요한 경우 테이블을 생성하는 동안 언급해야합니다. [외부 테이블 테스트 (col1 문자열) 위치 '/ data/database/tablename';] 만들기 두 번째 LOAD INPATH는 INPATH에서 외부 hdfs 위치로 데이터를 이동하면 INPATH에서 테이블 테이블로 데이터를 삽입합니다 (inpath에서 테이블의 hdfs 위치로 데이터를 복사하는 것과 같습니다)

+0

"포인터"인 외부 테이블을 생성 할 방법이 없습니까? (메타 데이터 테이블 에서처럼) 소스 데이터에 독립적이며 독립적입니다. 이것이 바로 문서가 말하는 것입니다. –

+0

외부 키워드 인 external 키워드를 사용하여 테이블을 만들면 hdfs 위치를 가리키는 테이블이됩니다. 데이터를 백업하고 테이블을 삭제하면 데이터가 제거되지 않습니다 ... 그냥 본적이 있습니다. –