Ответ 1
Я не совсем понял, что примеры из документации были адекватными, поэтому я попытался ответить.
В начале было только --hiveconf
, а замена переменных не существовала.
Параметр --hiveconf
разрешил пользователям устанавливать значения конфигурации улья из командной строки и все. Все значения конфигурации улья хранятся в пространстве имен hiveconf
, т.е. hiveconf:mapred.reduce.tasks
. Эти значения позволили вам управлять такими вещами, как количество карт и редукторов, если сообщения о состоянии должны отображаться, а если script должен продолжаться при ошибках.
Позже была добавлена замена . Это означало, что теперь вы можете использовать переменные в запросах с синтаксисом ${...}
. Тем не менее, единственные переменные, которые вы могли установить из командной строки, находились в пространстве имен hiveconf
, используя --hiveconf
, чтобы пользователи помещали свои переменные.
Помещение ваших личных переменных в пространство имен конфигурации Hive, вероятно, ничего не сломает, но это также не очень хорошая форма. Позже было предложено, чтобы пространство имен hivevar
было добавлено специально для пользовательских переменных, которые также можно было определить в командной строке с помощью --hivevar
. Это означало более чистое разделение между значениями конфигурации улья и пользовательскими переменными.
Вкратце:
Пространство имен hiveconf
и --hiveconf
должно использоваться для установки значений конфигурации Hive.
Пространство имен hivevar
и --hivevar
должно использоваться для определения пользовательских переменных.
Установка пользовательских переменных в пространстве имен hiveconf
, вероятно, ничего не сломает, но не рекомендуется.