大数据面试题:Hive分区和分桶的区别 面试题来源:《大数据面试题 V4.0》大数据面试题V3.0,523道题,679页,46w字 可回答:Hive分区和分桶的逻辑 问过的一些公司:字节,小米,阿里云社招,京东x2,猿辅导,竞技世界,美团,抖音 参考答案: 1、定义上 分区Hive的分区使用HDFS的子目录功能实现。每一个子目录包含了分区对应的列名和每一列的值。Hive的分区方式:由于Hive实际是存储在HDFS上的抽象,Hive的一个分区名对应一个目录名,子分区名就是子目录名,并不是一个实际字段。所以可以这样理解,当我们在插入数据的时候指定分区,其实就是新建一个目录或者子目录,或者在原有的目录上添加数据文件。 注意:partitned by子句中定义的列是表中正式的列(分区列),但是数据文件内并不包含这些列。 分桶:分桶表是在表或者分区表的基础上,进一步对表进行组织,Hive使用 对分桶所用的值;进行hash,并用hash结果除以桶的个数做取余运算的方式来分桶,保证了每个桶中都有数据,但每个桶中的数据条数不一定相等。 注意: 创建分区表时:可以使用distribute by(sno) sort by(sno asc) 或是使用clustered by(字段)当排序和分桶的字段相同的时候使用cluster by, 就等同于分桶+排序(sort) 2、数据类型上 分桶随机分割数据库,分区是非随机分割数据库。因为分桶是按照列的哈希函数进行分割的,相对比较平均;而分区是按照列的值来进行分割的,容易造成数据倾斜。 分桶是对应不同的文件(细粒度),分区是对应不同的文件夹(粗粒度)。桶是更为细粒度的数据范围划分,分桶的比分区获得更高的查询处理效率,使取样更高效。 注意:普通表(外部表、内部表)、分区表这三个都是对应HDFS上的目录,桶表对应是目录里的文件。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/89465.html