Восстановление Hive Partition

Как легко восстановить разделы. Вот сценарий:

  1. Есть n разделов на существующей внешней таблице t
  2. Отброшенная таблица 't'
  3. Воссозданная таблица 't' // Примечание: та же таблица, но с исключением некоторого столбца
  4. Как восстановить n разделов, существовавших для таблицы t на шаге 1?

Я могу вручную изменить таблицу, чтобы добавить раздел «n», написав какой-нибудь скрипт. Но это очень утомительно. Есть ли что-то встроенное для восстановления этих разделов?


person Balaji Boggaram Ramanarayan    schedule 26.05.2016    source источник


Ответы (2)


Когда каталоги разделов все еще существуют в HDFS, просто выполните эту команду:

MSCK REPAIR TABLE table_name;

Он добавляет определения разделов в хранилище метаданных на основе того, что существует в каталоге таблицы.

person 54l3d    schedule 26.05.2016
comment
Я не пробовал это с пользовательским Serde, но я думаю, что Serdes не влияет на эту команду, она должна работать нормально! - person 54l3d; 27.05.2016
comment
Да, вы правы, у Serde не должно быть никаких проблем. Но из того, что упоминается в документации, является то, что разделы можно восстановить, если только формат раздела - «гггг-мм-дд». Не знаете, как использовать нестандартный формат раздела? в моем случае у меня что-то вроде ггггммдд. - person Balaji Boggaram Ramanarayan; 27.05.2016
comment
Документация не накладывала никаких ограничений на это, но по логике есть одна вещь, о которой нужно заботиться, это формат раздела должен быть «ключ = значение», например. date = 160528 и нет проблем, есть дефисы или нет. - person 54l3d; 29.05.2016

Метаданные не сохраняются в корзине и удаляются безвозвратно; вы не сможете восстановить метаданные удаленных таблиц, разделов и т. д. Ссылка: http://www.cloudera.com/documentation/archive/cdh/4-x/4-7-1/РуководствопоустановкеCDH4/cdh4ig_hive_trash.html

person sumitya    schedule 27.05.2016