hive分区与分桶的区别_hive分区表和分桶表的区别

hive分区与分桶的区别_hive分区表和分桶表的区别实际应用中,hive里面的分区表和分桶表一般用于什么场景呢?01 分区表的概念当Hive表对应的数据量大、文件多时,为了避免查询时全表扫描数据,Hive支持根据用户指定的字段进行分区,分区的字段可以是日期、地域、种类等具有标识意义的字段。比如把一整

实际应用中,hive里面的分区表和分桶表一般用于什么场景呢?
  01 分区表的概念

  当Hive表对应的数据量大、文件多时,为了避免查询时全表扫描数据,Hive支持根据用户指定的字段进行分区,分区的字段可以是日期、地域、种类等具有标识意义的字段。比如把一整年的数据根据月份划分12个月(12个分区),后续就可以查询指定月份分区的数据,尽可能避免了全表扫描查询。hive分区与分桶的区别_hive分区表和分桶表的区别hive分区与分桶的区别_hive分区表和分桶表的区别

  分区表建表语法:

  需要注意:分区字段不能是表中已经存在的字段,因为分区字段最终也会以虚拟字段的形式显示在表结构上。

  分区表的本质:

  外表上看起来分区表好像没多大变化,只不过多了一个分区字段。实际上在底层管理数据的方式发生了改变。这里直接去HDFS查看区别。

  非分区表:t_all_herohive分区与分桶的区别_hive分区表和分桶表的区别hive分区与分桶的区别_hive分区表和分桶表的区别

  分区表:t_all_hero_parthive分区与分桶的区别_hive分区表和分桶表的区别hive分区与分桶的区别_hive分区表和分桶表的区别hive分区与分桶的区别_hive分区表和分桶表的区别hive分区与分桶的区别_hive分区表和分桶表的区别

  分区的概念提供了一种将Hive表数据分离为多个文件/目录的方法。不同分区对应着不同的文件夹,同一分区的数据存储在同一个文件夹下。只需要根据分区值找到对应的文件夹,扫描本分区下的文件即可,避免全表数据扫描。

  02 分桶表的概念

  分桶表也叫做桶表,源自建表语法中bucket单词。是一种用于优化查询而设计的表类型。该功能可以让数据分解为若干个部分易于管理。

  在分桶时,我们要指定根据哪个字段将数据分为几桶(几个部分)。默认规则是:Bucket number = hash_function(bucketing_column) mod num_buckets。

  可以发现桶编号相同的数据会被分到同一个桶当中。hash_function取决于分桶字段bucketing_column的类型:

  如果是int类型,hash_function(int) == int;

  如果是其他类型,比如bigint,string或者复杂数据类型,hash_function比较棘手,将是从该类型派生的某个数字,比如hashcode值。

  分桶表的语法

  其中CLUSTERED BY (col_name)表示根据哪个字段进行分;

  INTO N BUCKETS表示分为几桶(也就是几个部分)。

  需要注意的是,分桶的字段必须是表中已经存在的字段。

  ——> hive分区表和分桶表

  03 分区表的使用

  分区表的使用重点在于:

  一、建表时根据业务场景设置合适的分区字段。比如日期、地域、类别等;

  二、查询的时候尽量先使用where进行分区过滤,查询指定分区的数据,避免全表扫描。

  比如:查询英雄主要定位是射手并且最大生命大于6000的个数。使用分区表查询和使用非分区表进行查询,SQL如下:

  分区表的注意事项

  一、分区表不是建表的必要语法规则,是一种优化手段表,可选;

  二、分区字段不能是表中已有的字段,不能重复;

  三、分区字段是虚拟字段,其数据并不存储在底层的文件中;

  四、分区字段值的确定来自于用户价值数据手动指定(静态分区)或者根据查询结果位置自动推断(动态分区)

  五、Hive支持多重分区,也就是说在分区的基础上继续分区,划分更加细粒度

  04 分桶表的使用好处

  和非分桶表相比,分桶表的使用好处有以下几点:

  1、基于分桶字段查询时,减少全表扫描

  2、JOIN时可以提高MR程序效率,减少笛卡尔积数量

  对于JOIN操作两个表有一个相同的列,如果对这两个表都进行了分桶操作。那么将保存相同列值的桶进行JOIN操作就可以,可以大大较少JOIN的数据量。

  3、分桶表数据进行抽样

  当数据量特别大时,对全体数据进行处理存在困难时,抽样就显得尤其重要了。抽样可以从被抽取的数据中估计和推断出整体的特性,是科学实验、质量检验、社会调查普遍采用的一种经济有效的工作和研究方法。

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

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

(0)
上一篇 2024年 5月 21日
下一篇 2024年 5月 21日

相关推荐

关注微信