说一下为什么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/57592.html