Hive中几种常见的表

本文详细介绍了Hive中常见的表类型,包括内部表(管理表)、外部表、临时表、分区表以及分桶表的特点、用途和相互转换方法,强调了分区表如何提升查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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;

    再创建分桶表:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值