分区分桶的原理_分区分桶的区别

分区分桶的原理_分区分桶的区别说一下为什么hive会有分区表的概念,以及分区和分桶的区别说一下为什么hive会有分区表的概念,以及分区和分桶的区别总结回答在传统的数据库系统中,一般都具有表分区的功能,作用通过表分区能够在特定的区域检索数据,减少扫描成本,在一定程度上提高了查询效率,当然我们还可以通过进一步在分区上建立索引,进

说一下为什么hive会有分区表的概念,以及分区和分桶的区别
  说一下为什么hive会有分区表的概念,以及分区和分桶的区别

  总结回答

  在传统的数据库系统中,一般都具有表分区的功能,作用通过表分区能够在特定的区域检索数据,减少扫描成本,在一定程度上提高了查询效率,当然我们还可以通过进一步在分区上建立索引,进一步提高查询效率。

  在hive中,hive相对于传统数据库mysql有一个巨大的缺点,就是没有索引。那么在select数据时就需要进行全表扫描。但当数据量非常大时,代价比较高。因此hive进行了折中的办法:分区和分桶。

  分区和分桶都是DDL的概念,其中分区是控制多级目录,分桶是用来控制多个文件。分区:在逻辑上,分区表与未分区表没有区别,在物理上,分区表会将数据按照分区键的列值存储在表目录的子目录中。目录名=分区键的列值,其中需要注意的是分区键的值不能与表结构中的列字段重复。分桶是对列值取哈希值的方式,将不同数据放到不同文件中存储。由列的哈希值除以桶的个数来决定每条数据划分在哪个桶中。因为分桶操作需要根据某一列具体数据来进行哈希取模操作,故指定的分桶列必须基于表中的某一列(字段)。分桶是通过改变了数据的存储方式,把哈希取模相同或者在某一个区间的数据行放在同一个桶文件中,来提高查询效率。

  最后一点就是,因为hive中的数据是存储在hdfs中的,在hdfs中的数据是不允许修改只能追加,因此在hive中执行数据修改时,就只能先找到对应的文件中读取后再修改,然后重新写一份文件。如果分桶的话只需要找到文件存放对应的桶,然后读取再修改写入即可。

  面试点分析

  hive中的分区表很常被问到,问到后就会拿其与分桶做对比。紧接着内外部表区别,以及hive的优化数据倾斜,会带出一串问题。

  参考

  知乎《Hive分区与分桶》 CSDN《Hive Partition详解》 尚硅谷、尚学堂视频内容 我是精神抖擞王大鹏,不卑不亢,和蔼可亲~计算机硕士,目前小米大数据开发。日常会分享总结一些自己面试实际问题的回答,欢迎一起讨论~

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/93145.html

(0)
上一篇 2024年 5月 28日 下午11:28
下一篇 2024年 5月 28日 下午11:42

相关推荐

关注微信