hive外部表和内部表的区别
hive内部表删除的时候会将元数据和hdfs上的数据和对应的文件夹都删掉了,而删除外部表的时候,只会将元数据删除,而hdfs上的数据不会被删除,外部表创建添加external,不添加默认创建内部表
1.建立测试hive分区表
create table test_table(
name string comment "姓名",
age string comment "年龄",
clazz string "班级"
)partitioned by(grade string comment '以年级做分区字段')
row format delimited fields terminated by ',';
2.加载分区数据
##one.txt数据
小明,6,一班,一年级
小红,7,二班,一年级
小李,8,三班,一年级
小芳,9,四班,一年级
#将这份数据传到hdfs文件系统中
hadoop fs -put one.txt "/user/warehouse/test_table/"
##3.加载一年级分区数据
load data INPATH '/user/warehouse/test_table/one.txt' into table test_table PARTITION (grade ='一年级');
3.删除分区表数据
alter table test_table drop partition(grade=‘一年级’))
4.因为一年级数据变化了,重新加载一年级分区数据
one2.txt
小明2,6,一班,一年级
小红,7,二班,一年级
小李,8,三班,一年级
小芳,9,四班,一年级
小凌,6,五班,一年级
hadoop fs -put one2.txt "/user/warehouse/test_table/"
load data INPATH '/user/warehouse/test_table/one2.txt' into table test_table PARTITION (grade ='一年级');
因为hive没有对行级别的update 和 delete 操作,又不像删除表重建,就通过hdfs操作来更改hive的数据
网友评论