在Hadoop中,分区表是否是一个坏主意?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Hadoop中,分区表是否是一个坏主意?相关的知识,希望对你有一定的参考价值。

我正在通过Roberto在下面的帖子中给出答案。

What is the difference between partitioning and bucketing a table in Hive ?

看起来像是按日期划分数据(如果我的数据每天都来)并不是一个好主意,因为它最终会在HDFS中创建许多目录和文件,并会降低查询的整体性能?

在我有业务需求的情况下,如果要更频繁地使用日期来查询数据,我该怎么办?

答案

将日期用作分区绝对没有错。实际上,它是最常用的分区值之一。每年365个额外的目录不会对集群的性能产生任何影响。

至于它改变文件的数量:如果你每天摄取数据,那么无论你是否在日期分区,文件的数量都不会改变。唯一的区别是文件存储在哪个目录中。鉴于您将经常根据日期查询,您绝对应该在日期之间进行分区。

罗伯托的观点是有效的,但他说的是你有比你正在考虑使用更多分区的情况。根据Hortonworks employee

当前具有RDBMS Metastore后端的Hive版本应该能够处理10 000多个分区。

因此,您应该按日期进行分区,但是在待办事项中添加一个Jira票证,以便在300年内对其进行重新评估。

以上是关于在Hadoop中,分区表是否是一个坏主意?的主要内容,如果未能解决你的问题,请参考以下文章

如果在 Hadoop Map Reduce 中定义了自定义分区器,默认哈希分区器是不是仍然有效?

如何在分区器 hadoop 中使用分布式缓存?

如何在 Hadoop HDFS 中删除多级分区

hadoop 学习自定义分区

Hadoop集群hdfs添加磁盘操作

Hadoop学习之路(十七)MapReduce框架Partitoner分区