hive 内部表与外部表的区别

hive 内部表:

hive> create table soyo55(name STRING,addr STRING,money STRING) row format delimited fields terminated by ',' stored as textfile;

hive> load data local inpath '/home/soyo/桌面/4.txt' into table soyo55;

表中的数据到底存放在HDFS的什么地方?其实在Hive的${HIVE_HOME}/conf/hive-site.xml配置文件的hive.metastore.warehouse.dir属性指向的就是Hive表数据存放的路径(在我的电脑里面配置是/user/hive/warehouse (默认的表示没有配置hive.metastore.warehouse.dir属性)),而Hive每创建一个表都会在hive.metastore.warehouse.dir指向的目录下以表名创建一个文件夹,所有属于这个表的数据都存放在这个文件夹里面。

hive 外部表:

hive> create external table soyo89(name STRING,addr STRING,money STRING)location '/home/soyo';
hive> load data local inpath '/home/soyo/桌面/6.txt' into table soyo89;
表中的数据到底存放在HDFS的什么地方?存在HDFS中的“/home/soyo”路径下

hive 内部表与外部表的区别:

内部表当删除表时(drop table 表名)对应的表的元数据和具体数据都会被删除

外部表当删除表时(drop table 表名)对应的表的元数据被删除但是具体数据还是在以前存放的路径下(例如: 删除表soyo89后------> /home/soyo这个路径下的6.txt文件还是存在的)

外部表在创建时,如果location ‘/具体路径’下有具体的数据,可以直接加载数据进行操作(我认为这是挺方便的)

 

posted @ 2017-12-05 15:32  soyosuyang  阅读(504)  评论(0编辑  收藏  举报