当前位置:   article > 正文

Hive入门之基础知识(三)之分区与优化的简单介绍_hive分区数据量太少

hive分区数据量太少

为什么要对数据进行分区

在实际生产中,每天的数据量都是以亿为单位的,如果我们不对数据进行分区,直接对全部数据进行统计,则会大大增加时间开销,浪费大量资源。当我们做了合理分区后,例如按天进行分区,当查找某一天的数据时,Hive不会读取全部文件,只会读取HDFS中该天对应的目录,大大提高了执行效率。

分区是不是越多越好

多数情况下,对数据可以按天进行分区,如果数据量还是太大,可以考虑再按小时进行分区,或者取另一个维度作为分区条件,在此基础上,还可以按分钟,秒进行分区,但是进行过多的分区并不一定会加快查询执
行效率。

使用过多的分区可能导致创建了很多非必须的Hadoop文件和文件夹,一个分区对应着一个包含了多个文件的文件夹。如果对表进行过多分区,又存储了跨度很久的数据,最后就会超出NameNode对系统的管理能力,因为NameNode必须保存文件系统的元数据信息,当小文件过多时,会限制HDFS所能管理的文件总数上限。

另外,MR会将一个job转化为多个task,默认情况下,每个task都是一个新的JVM实例,而JVM的开启和销毁都是需要时间开销的,对于每个小文件产生的task,JVM创建和销毁的开销可能会大于对文件内容本身进行处理的开销。

此外,默认情况下,Hive还会限制动态分区可以创建的最大分区数。

对数据进行分桶

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

以下将创建一个按时间分区,使用user_id作为分桶字段的测试表,us

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/486393
推荐阅读
相关标签
  

闽ICP备14008679号