Hadoop 如何取消配置单元中每个节点的分区限制?

Hadoop 如何取消配置单元中每个节点的分区限制?,hadoop,hive,partitioning,Hadoop,Hive,Partitioning,我在蜂房里有一张分区的桌子。对于每个节点,我将分区限制设置为2000 set hive.exec.max.dynamic.partitions.pernode=2000 现在已经到了2000年,我面临一个问题。所以我想知道是否有可能取消这个限制 只是我不想为hive.exec.max.dynamic.partitions.pernode设置任何值,它应该处理任意数量的分区 那么有人能在这方面帮助我吗?据我所知,这是无法做到的,它可以创建的动态分区的数量是有限的。据我所知,这个限制与每个分区存储

我在蜂房里有一张分区的桌子。对于每个节点,我将分区限制设置为2000

set hive.exec.max.dynamic.partitions.pernode=2000
现在已经到了2000年,我面临一个问题。所以我想知道是否有可能取消这个限制

只是我不想为
hive.exec.max.dynamic.partitions.pernode设置任何值,它应该处理任意数量的分区


那么有人能在这方面帮助我吗?

据我所知,这是无法做到的,它可以创建的动态分区的数量是有限的。据我所知,这个限制与每个分区存储在单独的HDFS目录中有关,因此它们的数量在某种程度上是预先限制的,以防止性能问题。

据我所知,这是不可能做到的,它可以创建的动态分区的数量有一个限制。据我所知,这个限制与每个分区存储在一个单独的HDFS目录中有关,因此它们的数量在某种程度上是预先限制的,以防止性能问题。

我以前遇到过这个问题。在SQL末尾添加distribute by partition_列

insert overwrite table table_A partition (date_id)
select xxxxxxxx
from table_B
distribute by date_id;

使用“分发方式”,相同的日期\u id值将被混洗到一个减速机中。因此,reducer可能会处理多个日期id,而不是随机日期id(这可能包括所有日期id)。

我以前遇到过这个问题。在SQL末尾添加distribute by partition_列

insert overwrite table table_A partition (date_id)
select xxxxxxxx
from table_B
distribute by date_id;

使用“分发方式”,相同的日期\u id值将被混洗到一个减速机中。因此,reducer可以处理多个日期id而不是随机日期id(这可能包括所有日期id)。

如何通过与动态分区连接的
分配?分发或不分发动态创建的分区数将是相同的。Distribute by有助于减少内存消耗。Distribute by partition_列可以重新分发数据,具有相同分区的数据将被洗牌到一个reducer中。这不会改变每个节点的分区数。我很难用英语解释这一点,可能您可以编写一个示例SQL。两者都将创建15000个分区,但不使用distribute by,分区a可能由100个节点创建,每个节点生成1%的数据,每个节点将在hive.exec.max.dynamic.partitions.pernode中+1个分区,使用distribute by,分区_A中的所有数据将由一个节点处理,该节点仅处理特定的数据量。因此,这将减少由该节点创建的分区。
如何通过与动态分区连接的
进行分发?分发或不分发动态创建的分区数将是相同的。Distribute by有助于减少内存消耗。Distribute by partition_列可以重新分发数据,具有相同分区的数据将被洗牌到一个reducer中。这不会改变每个节点的分区数。我很难用英语解释这一点,可能您可以编写一个示例SQL。两者都将创建15000个分区,但不使用distribute by,分区a可能由100个节点创建,每个节点生成1%的数据,每个节点将在hive.exec.max.dynamic.partitions.pernode中+1个分区,使用distribute by,分区_A中的所有数据将由一个节点处理,该节点仅处理特定的数据量。因此,这将减少该节点创建的分区。