查询各个分区的数据量_分区表和分桶表

本文介绍了Hive中的分区表和分桶表。分区表将大文件按时间等切分成小文件,分区字段是虚拟的,可减少全表扫描成本;分桶表按指定字段将数据分到多个文件,需开启分桶功能,常用于提高join查询效率。两者各有优点和字段要求。

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

分区表:

在大数据中,最常用的一种思想就是分治,我们可以把大的文件切割划分成一个个的小的文件,这样每次操作一个小的文件就会很容易了,同样的道理,在hive当中也是支持这种思想的,就是我们可以把大的数据,按照每天,或者每小时进行切分成一个个的小的文件,这样去操作小的文件就会容易得多了

分区字段是一个虚拟的字段 不存放任何数据,分区表字段不能够在表中已经存在。

分区字段的数据来自于装载分区表数据的时候指定的

分区表的字段在hdfs上的效果就是在建立表的文件夹下面又创建了子文件,这样的目的把数据的划分更加细致 减少了查询时候全表扫描成本 只需要按照指定的分区扫描数据并显示结果即可

bb1addd5c5c4f36d5b74448c39009105.png

分桶表

将数据按照指定的字段进行分成多个桶中去,说白了就是将数据按照字段进行划分,可以将数据按照字段划分到多个文件当中去

分桶表(分簇表)创建之前需要开启分桶功能,分桶表创建的时候分桶字段必须是表中已经存储的字段,也就是说你要按照表中那个字段进行分桶

针对分桶表的数据导入:load data方式不能够导成分桶表的数据,没有分桶效果,原因在于load 本质是哪个相当于 hive 去帮我们执行hadoop fs -put

分桶表的数据采用insert+select 插入的数据来自于查询结果(查询时候执行了mr程序)对应mr当中的partitioner

默认分桶负责 按照你指定的分桶字段clustered by 哈希值与分桶的个数 set mapreduce.job.reduces 进行模运算取余

分桶表也是把表所映射的结构化数据文件分成更细致的部分 但是更多的是用在join 查询提高效率之上

只需要把join 的字段在各自表当中进行分桶操作即可

49089d3227f78dd3dc443062adf201f7.png

分区表和分桶表的优点,字段的要求

分区表: 优点是:提高查询效率 要求是:分区字段绝对不能出现在表已有的字段内。

分桶表: 优点是:提高join效率和用于数据取样。 要求是:分桶字段必须出现在表已有的字段内。

Hive将表划分为分区(partition)表和分桶(bucket)表。

  • 分区可以让数据的部分查询变得更快,也就是说,在加载数据的时候可以指定加载某一部分数据,并不是全量的数据。
  • 分桶表通常是在原始数据中加入一些额外的结构,这些结构可以用于高效的查询,例如,基于ID的分桶可以使得用户的查询非常的块。
  • 分区在HDFS上的表现形式是一个目录, 分桶是一个单独的文件
  • 分区: 细化数据管理,直接读对应目录,缩小mapreduce程序要扫描的数据量
  • 分桶:  
    1、提高join查询的效率(用分桶字段做连接字段)
    2、提高采样的效率。

大数据培训

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值