Try this:
ALTER TABLE adataindicateursf CHANGE val2 val2 int;
ALTER TABLE adataindicateursf CHANGE val3 val3 double;
if the above query are not working then try this:
set hive.metastore.disallow.incompatible.col.type.changes=false
when you set the properties then the types of columns in Metastore can be changed from any type to any other type.
UTF-8 сохраняет пространство, пока Вы, прежде всего, используете стандартные символы ASCII.
станд.:: строка не имеет никакой проблемы с UTF-8, поскольку существует номер 0 байтов в нем. Можно сказать станд.:: представьте в виде строки, какой длины символы исходных данных, если у них есть ПУСТЫЕ байты, как в UTF-32. станд.:: строка не смогла бы сказать Вам, сколько символов Ваша строка UTF-8, необходимо было бы использовать внешнюю функцию.
Кроме того, существует широкая версия станд.:: строка с помощью wchar_t, в противоположность символу, я просто забываю имя.
Также существуют фасеты в повышении для преобразования между кодировкой.
Можно или пользоваться стандартной библиотекой с повышением. Или можно использовать строковые функции обработки из библиотеки C. Существуют также функции, обеспеченные путем программирования платформ, таких как Qt и Tcl.
Посмотрите, например:
Взгляните на Переключение со станд.:: представьте в виде строки к станд.:: wstring для встраиваемых приложений? вопрос
Как сказанный Pukku: Вы могли бы страдать от некоторой головной боли из-за того, что стандарт C++ диктует, что широкие потоки обязаны преобразовывать двухбайтовые символы в однобайтовый при записи в файл, и как это преобразование сделано, зависящее от реализации.