外部表和内部表的区别
- 内部表也称之为managed_table;
- 默认存储在/user/hive/warehouse下,也可以通过location指定;
- 删除表事,会删除表数据以及元数据;
- 外部表称之为external_table;
- 在创建表时可以自己指定目录位置,使用location;
- 删除表时,只会删除元数据不会删除表数据;
- 实际业务中用得比较多;
外部表创建的时候需要在create后添加external
eg:
create external table if not exists default.dept(
deptno int,
dname string,
loc string
)
row format delimited fields terminated by '\t';
查看表的详细信息:
desc formatted table_name;
分区表
修复分区表,查询mysql中的metastore中的partition表发现没有该分区表的数据,使用以下命令进行修复。
第一种方法
msck repair table table_name;
第二种方法
alter table table_name add partition(day='20190813');
注:括号中的(day='20190813')为创建partition分区表时设置的分区值。
查看分区表的分区的数
show partitions table_name;