hadoop - `hive.exec.max.dynamic.partitions`和 `hive.exec.max.dynamic.partitions.pernode`的区别

标签 hadoop hive

我正在寻找一些文档来了解 hive.exec.max.dynamic.partitionshive.exec.max.dynamic.partitions.pernode 之间的区别。

我们什么时候需要设置这些参数,这些参数有什么用?

hive.exec.max.dynamic.partitions=500
hive.exec.max.dynamic.partitions.pernode=500

最佳答案

Hive 的动态分区允许用户创建分区而无需提供分区值。分区值是在查询执行期间根据其对应的输入列值确定的。

创建的分区数将与不同的列值集成正比。这反过来会给 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:参与插入作业的每个 mapper 或 reducer 节点允许创建的最大分区数。

500 设置为问题中提到的两个属性的值将只允许一个映射器/reducer 运行失败。

作为最佳实践,

hive.exec.max.dynamic.partitions ~= n * hive.exec.max.dynamic.partitions.pernode

其中 n 是作业所需的 mapper 和(或)reducer 的数量。

关于hadoop - `hive.exec.max.dynamic.partitions`和 `hive.exec.max.dynamic.partitions.pernode`的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61200935/

相关文章:

hadoop - 配置单元未通过 “where”子句运行Map Reduce

java - hadoop、map/reduce 输出文件(part-00000)和分布式缓存

Hadoop (HDFS) - 文件版本控制

hadoop - Hive中的Hive/lib/hive-builtins-0.9.0.jar的FileNotFoundException

hive - 过滤 Spark 分区表在 Pyspark 中不起作用

hadoop - hive 在分区表上添加列不起作用

Hadoop:映射二进制文件

Hadoop - WordCount 运行良好,但另一个示例卡住了

hadoop - hive -h <主机名>未建立与hive控制台的连接

hadoop - 如何通过从 sqlserver 捕获表来迭代 sqoop 作业?