我想知道 hive 动态分区中的一件事。在进行动态分区时,我们必须设置以下属性
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
没有这些属性,我们就无法进行动态分区。
我想知道为什么需要这些?谁能告诉我为什么我们需要设置这个属性。
我想知道 hive 动态分区中的一件事。在进行动态分区时,我们必须设置以下属性
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
没有这些属性,我们就无法进行动态分区。
我想知道为什么需要这些?谁能告诉我为什么我们需要设置这个属性。
它是作为防止无意覆盖分区的附加保护措施而完成的。
文档说:
我们要防止动态分区插入的另一种情况是,用户可能不小心将所有分区指定为动态分区而没有指定一个静态分区,而本意只是覆盖一个根分区的子分区。我们定义了另一个参数
hive.exec.dynamic.partition.mode=strict
来防止全动态分区的情况。在严格模式下,您必须至少指定一个静态分区。默认模式是严格的。此外,我们还有一个参数hive.exec.dynamic.partition=true/false
来控制是否允许动态分区。在 Hive 0.9.0 之前默认值为 false,在 Hive 0.9.0 及更高版本中为 true