我正在接受罗伯托在以下帖子中给出的答案。
What is the difference between partitioning and bucketing a table in Hive ?
似乎在数据上划分数据(如果我的数据每天都会出现)不是一个好主意,因为它最终会在HDFS中创建许多目录和文件,并会降低查询的整体性能?
在我有业务需求的情况下,如果要更频繁地使用日期来查询数据,我该怎么办?
答案 0 :(得分:0)
将日期用作分区绝对没有错。实际上,它是最常用的分区值之一。每年365个额外的目录不会对集群的性能产生任何影响。
至于更改文件数量:如果您每天都在提取数据,那么无论您是否按日期分区,文件数都不会改变。唯一的区别是文件存储在哪个目录中。 鉴于您将经常根据日期进行查询,您绝对应该对日期进行分区。
罗伯托的观点是有效的,但他谈的是你有更多分区而不是考虑使用的情况。根据{{3}}:
当前具有RDBMS Metastore后端的Hive版本应该能够处理10 000多个分区。
因此,您应该按日期进行分区,但是要在待办事项中添加Jira票证,以便在300年内对其进行重新评估。