Разница между `hive.exe c .max.dynami c .partitions` и` hive.exe c .max.dynami c .partitions.pernode` - PullRequest
1 голос
/ 14 апреля 2020

Я ищу документацию, чтобы понять разницу между hive.exec.max.dynamic.partitions и hive.exec.max.dynamic.partitions.pernode.

Когда нам нужно устанавливать эти параметры и для чего они нужны?

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

1 Ответ

2 голосов
/ 14 апреля 2020

Hive's Dynami c Partitioning позволяет пользователям создавать разделы без указания значений разделов. Значения разделов определяются из их соответствующих значений входного столбца во время выполнения запроса.

Количество созданных разделов будет пропорционально различному набору значений столбцов. Этот переход создаст бремя для HDFS-наменода и Hive Metastore.

Эти свойства

hive.exec.max.dynamic.partitions
hive.exec.max.dynamic.partitions.pernode

предназначены для того, чтобы контролировать их, ограничивая число разделов, которые могут быть созданы Dynami c Partitioning.

hive.exec.max.dynamic.partitions : Максимальное количество разделов, которое может быть создано в общей сложности одной динамической вставкой раздела c.

Динамические c разделы создаются только через INSERT. Запрос INSERT может инициировать либо задание «Только карта», либо задание MapReduce на основе DML.

hive.exec.max.dynamic.partitions.pernode: максимальное число разделов, которое может быть создано каждым узлом отображения или редуктора, участвующим в задании вставки.

Установка 500 в качестве значения для обоих свойств как Упомянутый в вопросе разрешит запускать только один маппер / редуктор, отказывая другим.

В качестве оптимальной практики

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

, где n - это число мапперов и (и) или) редуктор (ы), необходимые для работы.

...