Hive面试题1:内部表和外部表

面试的时候遇到这个问题会很惊喜,很容易回答上的问题,可以多说一些。

定义:
外部表是被external修饰的表,内部表也叫管理表,通过desc formatted查看表是否有external参数, true的话是外部表。

内部表和外部表的区别:
创建不同 一个是external修饰,一个没有。
存储位置不同内部表会将数据和元数据移动到数据仓库指向的路径,外部表可以指定hdfs的其他路径。
删除时内部表会直接删除掉,外部表只是删除了元数据,数据还存放在hdfs上。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。

使用场景:
每天收集到的网站数据,需要做大量的统计数据分析,所以在数据源上可以使用外部表进行存储,方便数据的共享,在做统计分析时候用到的中间表,结果表可以使用内部表,因为这些数据不需要共享,使用内部表更为合适,数据通过SELECT+INSERT进入内部表。

内部表和外部表还可以相互转化
内部表—>外部表:
alter table student2 set tblproperties('EXTERNAL'='TRUE');
外部表—>内部表:
alter table student2 set tblproperties('EXTERNAL'='FALSE');

发布了35 篇原创文章 · 获赞 12 · 访问量 6640

猜你喜欢

转载自blog.csdn.net/u012955829/article/details/102790448