内部表外部表的操作:
1、外部表:因其指删除表时不会删除HDFS上的数据,安全性相对较高,且指定目录的特性,适合数据需要共享或者数据的处理需要 hive和其他工具一起处理的场景。
2、内部表:对原始数据或比较重要的中间数据进行建表存储。
内部表被drop后,表的data和metadata都会被删除;外部表被drop后,表的metadata会被删除,但是data不会被删除。如果不小心删掉外部表,重新建表location到数据存放在HDFS的相应路径即可。
将外部表转换成内部表:
alter table student2 set tblproperties('EXTERNAL'='FALSE');
将内部表转化成外部表:
alter table student2 set tblproperties('EXTERNAL'='TRUE');
注意:(‘EXTERNAL’=‘TRUE’)和(‘EXTERNAL’=‘FALSE’)为固定写法,区分大小写!
hive表增加一列(不删除其他数据):
alter table table_name add columns (c_time string comment '当前时间'); -- 正确,添加在最后
alter table table_name change c_time c_time string after address ; -- 正确,移动到指定位置,address字段的后面