Hive分桶表

Hive 专栏收录该内容
7 篇文章 0 订阅

Hive分桶表

分区的使用场景
  • 分区提供了一个隔离数据和优化查询的便利方式,不过并非所有的数据都可形成合理的分区,尤其是需要确定合适大小的分区划分方式,不合理的数据分区划分方式可能导致有的分区数据过多,而某些分区没有什么数据的尴尬情况。

  • 分桶是将数据集分解为更容易管理的若干部分的另一种技术。

数据分桶的原理
  • 和MR中的HashPartitioner的原理一样。
  • MR中:按照key的hash值去模除以reduceTask的个数。
  • Hive中:按照分桶字段的hash值去模除以分桶的个数。
    Hive也是针对某一列进行桶的组织。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录放在哪个桶中。
  • 每个桶就是表目录里的一个文件,一个作业产生的桶和reduce任务个数相同。
数据分桶的作用
  • 方便抽样
    使取样更高效。在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上试运行查询,会带来很多方便。

  • 提高join查询效率
    桶为表加上了额外的结构,Hive在处理有些查询时能利用这个结构。具体而言,连接两个在相同列上划分了桶的表,可以使Map端连接更高效的实现。比如join操作,对于join操作两个表有一个相同的列,如果对这两个表都进行了桶操作,那么将保存相同列值的桶进行join操作就可以,可以大大减少join的数据量。

创建数据分桶表
  • cluster by(col,col) into 100buckets
  • 分桶中的字段是原始数据中存在的。分区表,分区字段在原始文件中并不存在。
    原文参考此处
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值