1. 程式人生 > >hive 外部表,內部表

hive 外部表,內部表

create table test(id int,name string) row format delimited fields terminated by ',' ;

載入資料 load data local inpath '/home/test/test.txt' into table test;

如果建表沒有指定location,就會在hive.metastore.warehouse.dir 路徑下建立以表名為名的資料夾

在hive-site.xml中可以配置

<property>
   <name>hive.metastore.warehouse.dir</name>
   <value>/user/hive/warehouse</value>
</property>

drop table test; hadoop fs -ls /user/hive/warehouse 沒有檔案

外部表 

create external test(id int,name string) row format delimited fields terminated by ','  location '/user/hive/mytest';

加了external關鍵字 和location 可以不指定location還是會存到 user/hive/warehouse路徑下;

load data local inpath '/home/test/test.txt' into table test;

drop table test;

hadoop fs -ls /user/hive/warehouse 發現有資料;

即:

  • 建立外部表需要新增 external 欄位。而內部表不需要。
  • 刪除外部表時,HDFS中的資料檔案不會一起被刪除。而刪除內部表時,表資料及HDFS中的資料檔案都會被刪除。