Hive的表类型主要有:内部表(受控表/管理表)、外部表、临时表、分区表、分桶表。
1. 内部表(管理表)
默认创建的表都是管理表/内部表,表数据默认存储在warehouse目录中,在加载数据的过程中,实际数据会被移动到warehouse目录中,当删除表时,表的数据和元数据将会被同时删除,管理表不适合和其他工具共享数据。
2.外部表 (external)重点
表是外部表,所以hive并非认为完全拥有这份数据。删除该表并不会删除这份数据,不过描述表的元数据信息会被删除掉。
注意:使用as语句无法创建外部表,但是可以使用like进行创建表结构,但是没有数据。
3.临时表(temporary)不支持分区
创建临时表,使用TEMPORARY关键字,临时表只在当前会话中存在,当会话结束后,临时表会自动删除。
4.分区表
创建分区表是为了防止暴力扫描全表,提高查询效率。分区字段在源文件中是不存在的,需要在添加数据的时候手动指定。
每一个分区对应一个目录。通过partitioned by来在创建分区表的时候添加分区字段。
使用场景:可以通过分区表,将每天搜集的数据进行区分,查询统计的时候通过指定分区,提高查询效率。
临时表可以存储在内存或SSD中,使用hive.exec.temporary.table.storage参数进行配置,该参数有三种取值:memory、ssd、default(memory)
内部表和外部表之间的转换
内部表->外部表
Alter table managed_emp set dbproperties(‘EXTERNAL’=’TRUE’);
内部表<-外部表
5.分桶表
桶是比表或分区更为细粒度的数据范围划分。针对某一列进行桶的组织,对列值哈希,然后除以桶的个数求余,决定将该条记录存放到哪个桶中。
需要先设置:set hive.enforce.bucketing = true;文章来源:https://www.toymoban.com/news/detail-832463.html
再创建分桶表:文章来源地址https://www.toymoban.com/news/detail-832463.html
到了这里,关于Hive中几种常见的表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!