內表和外表的區別
阿新 • • 發佈:2019-01-08
原文轉自:http://blog.csdn.net/zhangzhebjut/article/details/39275181
1. 內部表- create table zz (name string , age string) location '/input/table_data';
- load data inpath '/input/data' into table zz;
如果建立內部表時沒有指定location,就會在/user/hive/warehouse/下新建一個表目錄,其餘情況同上。
注:load data會轉移資料
2. 外部表- create external table et (name string , age string);
- load data inpath '/input/edata' into table et;
2、在刪除內部表的時候,Hive將會把屬於表的元資料和資料全部刪掉;而刪除外部表的時候,Hive僅僅刪除外部表的元資料,資料是不會刪除的!
3. 在建立內部表或外部表時加上location 的效果是一樣的,只不過表目錄的位置不同而已,加上partition用法也一樣,只不過表目錄下會有分割槽目錄而已, load data local inpath直接把本地檔案系統的資料上傳到hdfs上,有location上傳到location指定的位置上,沒有的話上傳到hive預設配置的資料倉庫中。