Hive 限制中的最大动态分区

Posted

技术标签:

【中文标题】Hive 限制中的最大动态分区【英文标题】:maximum dynamic partitions in Hive limit 【发布时间】:2019-10-18 21:25:50 【问题描述】:

我在查询中使用动态分区。我收到以下错误:-

ERROR Failed with exception Number of dynamic partitions created is 9000, which is more than 5000

我知道有很多关于这个主题的帖子。为hive.exec.max.dynamic.partitions 设置更高的值应该会处理好它。我的问题不同。我试图理解错误的确切含义。此限制是否仅适用于单个作业,即单个作业不能创建超过 5000 个动态分区?或者是一个表级别的限制,一个定义了动态分区的表,总共不能超过5000个这样的分区?

【问题讨论】:

【参考方案1】:

此限制适用于单个作业,而不适用于表。 您可以查看 Hive 测试来验证这一点。

https://github.com/apache/hive/blob/8dc40db5f90ca9491b643f70e2344decbd2ad8f5/ql/src/test/queries/clientnegative/dyn_part1.q

【讨论】:

所以没有表级别限制? 是的,据我所知没有限制。如果您正在读取许多分区,则会对性能产生影响。 Hive 将元数据存储在 RDBMS 中,因此速度应该足够快,并且您应该在 Hadoop 集群中拥有足够的资源。

以上是关于Hive 限制中的最大动态分区的主要内容,如果未能解决你的问题,请参考以下文章

Hive 动态分区

Hive 中的动态分区 - 使用一个固定列进行分区的缺点

hive 动态分区与混合分区

Hive - 面临动态分区错误中的挑战

如何从具有动态分区的选择查询中插入 Hive 中的列?

Hive分区参考