Ответ 1
Вы не можете добавить столбец со значением по умолчанию в Hive. У вас есть правильный синтаксис добавления столбца ALTER TABLE test1 ADD COLUMNS (access_count1 int);
, вам просто нужно избавиться от default sum(max_count)
. Никаких изменений в файлах, поддерживающих вашу таблицу, не произойдет в результате добавления столбца. Hive обрабатывает "отсутствующие" данные, интерпретируя NULL
как значение для каждой ячейки в этом столбце.
Итак, теперь у вас есть проблема с необходимостью заполнения столбца. К сожалению, в Hive вам необходимо переписать всю таблицу, на этот раз с заполненным столбцом. Возможно, вам будет проще выполнить повторный запуск исходного запроса с помощью нового столбца. Или вы можете добавить столбец в таблицу, которую у вас есть, затем выберите все его столбцы и значение для нового столбца.
У вас также есть возможность всегда COALESCE
столбца указать желаемое значение по умолчанию и оставить его NULL
пока. Эта опция не работает, если вы хотите, чтобы NULL
имел значение, отличное от вашего желаемого значения по умолчанию. Это также требует от вас всегда зависеть от COALESCE
.
Если вы очень уверены в своих способностях справиться с файлами, поддерживающими Hive, вы также можете напрямую изменить их, чтобы добавить свой по умолчанию. В общем, я бы рекомендовал против этого, потому что большую часть времени он будет медленнее и опаснее. Возможно, в некоторых случаях это имеет смысл, поэтому я включил этот вариант для полноты.