我正在寻找一些文件,以了解之间的区别 hive.exec.max.dynamic.partitions 以及 hive.exec.max.dynamic.partitions.pernode .我们什么时候需要设置这些参数?这些参数有什么用?
hive.exec.max.dynamic.partitions
hive.exec.max.dynamic.partitions.pernode
hive.exec.max.dynamic.partitions=500 hive.exec.max.dynamic.partitions.pernode=500
3bygqnnd1#
hive的动态分区允许用户创建分区,而不必提供分区值。分区值是在查询执行期间根据其相应的输入列值确定的。创建的分区数将与列值的不同集合成比例。这个inturn将为hdfs namenode和hive metastore创建负担。这些属性
hive.exec.max.dynamic.partitions hive.exec.max.dynamic.partitions.pernode
通过限制动态分区可以创建的分区的数量来控制它们。 hive.exec.max.dynamic.partitions :一个动态分区插入允许创建的最大分区总数。动态分区只能通过 INSERT . 这个 INSERT 查询可以触发仅Map作业或基于dml的mapreduce作业。 hive.exec.max.dynamic.partitions.pernode :参与插入作业的每个Map器或还原器节点允许创建的最大分区数。设置 500 因为问题中提到的两个属性的值只允许一个Map器/还原器运行其他Map器/还原器。作为最佳实践,
INSERT
500
hive.exec.max.dynamic.partitions ~= n * hive.exec.max.dynamic.partitions.pernode
哪里 n 是作业所需的Map器和(或)还原器的数量。
n
1条答案
按热度按时间3bygqnnd1#
hive的动态分区允许用户创建分区,而不必提供分区值。分区值是在查询执行期间根据其相应的输入列值确定的。
创建的分区数将与列值的不同集合成比例。这个inturn将为hdfs namenode和hive metastore创建负担。
这些属性
通过限制动态分区可以创建的分区的数量来控制它们。
hive.exec.max.dynamic.partitions
:一个动态分区插入允许创建的最大分区总数。动态分区只能通过
INSERT
. 这个INSERT
查询可以触发仅Map作业或基于dml的mapreduce作业。hive.exec.max.dynamic.partitions.pernode
:参与插入作业的每个Map器或还原器节点允许创建的最大分区数。设置
500
因为问题中提到的两个属性的值只允许一个Map器/还原器运行其他Map器/还原器。作为最佳实践,
哪里
n
是作业所需的Map器和(或)还原器的数量。