Hive分区(Partition)和桶(Bucket)

Hive分区通过按规则创建分区目录,提高查询效率,静态分区需手动添加,动态分区在插入数据时指定。桶进一步细化数据划分,通过字段hash进行桶内数据分布,提高抽样查询性能。文章介绍了分区表创建、插入数据、查询和删除分区,以及桶的使用方法和对查询性能的影响。
摘要由CSDN通过智能技术生成

介绍

HIve做为数据仓库,往往会存储大量数据。当数据量过大时,会大大降低查询和统计效率。为了解决这个问题提出了分区(Partition)概念,将数据按照一定的规则进行分区,这样需要读取数据时,就可以直接扫面某个分区下的数据,避免全表扫描,提高了查询统计效率。例如按照地区(省份)进行分区,北京地区数据会落到一个分区目录中,天津地区数据落到另一个分区目录中,当要查询北京/天津地区数据时,直接扫描北京/天津分区目录,大大缩短了查询时间。

分区表创建

分区表创建方式有两种,静态分区和动态分区。二者区别在于是否手动创建分区,静态分区需要在插入数据前使用add partition命令添加分区,动态分区只需要在插入数据insert命令中指定分区字段即可。因此在存在大量分区时使用动态分区比较方便,不需要手动创建这些分区。

create table test(id int, name string) partitioned by (year int);

注意:分区表创建时分区字段不需要单独做为column指定,只需要在partitioned by()中指定字段和类型即可,多个分区字段用“,”隔开

插入数据

数据插入成功后,会在warehouse(HDFS)上创建对应分区目录,例如/hive/warehouse/test/year=2020,/hive/warehouse/test/year=2019等分区目录。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值