2017-02-14 17 views
1

Когда я пытаюсь переименовать все столбцы разделов в существующей таблице для диапазона дат одного года, которые разделены - это то, что я получаю.Как переименовать все столбцы разделов в куст

hive> ALTER TABLE test.usage PARTITION ('date') RENAME TO PARTITION (partition_date);

FAILED: ValidationFailureSemanticException Partition spec {partition_date=null} contains non-partition columns.

я получил, что синтаксис отсюда: 1

+0

могли бы вы сказать мне, что вывод этой команды:> показать создать таблицу test.usage; Также было бы полезно, если вы можете поделиться тем, что использует версия Hive, Hive 0.13 есть проблема переименования разделов. – dbustosp

+0

Смотрите это: http://stackoverflow.com/questions/32111036/how-to-alter-hive-partition-column-name/42252291#42252291 – dbustosp

ответ

0

Учитывая, что я не 100% уверен, что если то, что вы хотите, чтобы переименовать значение раздела или на самом деле изменить столбец, который разделен на таблицу.

Предположим, вы хотите переименовать значение раздела.

Существует проблема в Hive 0.13, а в Hive 0.14 работает нормально. В любом случае, это должно работать:

set fs.hdfs.impl.disable.cache=false; 
set fs.file.impl.disable.cache=false; 

Теперь запустите запрос, установив это свойство.

> hive> set fs.hdfs.impl.disable.cache=false; 
> hive> set fs.file.impl.disable.cache=false; 
> hive> ALTER TABLE test.usage PARTITION (date='oldValue') RENAME TO PARTITION (date='newValue'); 

Давайте предположим, что вы хотите изменить столбец раздела

В этом случае то, что вам нужно сделать, это обновить таблицу изменения столбца, который будет разделенной таблица.

Примечание. Помните, что если у вас уже есть данные внутри разделов, вам нужно будет повторно вставить данные.

Смотрите также это answer

+0

Спасибо! На самом деле я ищу изменение столбца раздела, и это помогает. – hadoop