2016-09-11 45 views
0

在Hue - > Hive查詢瀏覽器中,我在Hive中創建了一個外部表,並使用以下語句將數據從我的一個CSV文件加載到它中:Hive:即使當表是外部時,源數據也被移動到hive數據倉庫

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; 

我看到源文件「電影」從HDFS中消失並轉移到配置單元數據倉庫。我的印象是外部表格只能作爲原始源數據的鏈接。

如果外部表不是獨立於源數據 - 如果我要刪除表,源文件仍然會保留?我如何創建這樣的外部表格?

回答

0

外部表格將數據存儲在我們創建表格時提到的hdfs位置中。因此,如果我們在創建表時不提供位置,它將默認爲倉庫hdfs文件夾。 嘗試運行「use mydatabase_name; show create table mytable_name;」獲取表定義以查看它指向的位置。 如果你需要一個非默認值的hdfs位置,你需要在創建table時提及它。查詢如下查詢 [創建外部表測試(col1字符串)位置'/ data/database/tablename';] 其次LOAD INPATH不會將數據從INPATH移動到外部hdfs位置,它會將數據從INPATH插入到表格表中(更像是將數據從inpath複製到表格的hdfs位置)

+0

是否沒有辦法創建只是「指針」的外部表到源數據並獨立於它(如在元數據表中)?這就是文檔似乎談論的內容。 –

+0

當您使用外部關鍵字創建表格時,其外部表格指向hdfs位置。備份數據並刪除表格,數據不會被刪除...只要看看它就可以了。 –