Hive: изменение местоположения внешней таблицы занимает слишком много времени

В Hive есть два типа таблиц: управляемые и внешние, для разницы вы можете проверить Управляемый. VS Внешние таблицы.

В настоящее время, чтобы переместить внешнюю базу данных с HDFS на Alluxio, мне нужно изменить расположение внешней таблицы на alluxio://.

Заявление выглядит примерно так: alter table catalog_page set location "alluxio://node1:19998/user/root/tpcds/1000/catalog_returns"

По моему мнению, это должна быть простая модификация хранилища метаданных, однако на изменение некоторых таблиц на это уйдут десятки минут. Сама база данных, кстати, содержит около 1 ТБ данных.

Могу ли я ускорить процесс изменения таблицы? Если нет, то почему так медленно? Любые комментарии приветствуются, спасибо.


person Eugene    schedule 26.08.2019    source источник
comment
Предположим, у меня есть 10 таблиц, имеет ли смысл запускать клиентский процесс из 10 кустов, и каждый процесс изменяет одну таблицу?   -  person Eugene    schedule 26.08.2019


Ответы (1)


Я нашел предложенный способ, который находится metatool под $HIVE_HOME/bin.

metatool -updateLocation <new-loc> <old-loc>      Update FS root location in the
                                          metastore to new location.Both
                                          new-loc and old-loc should be
                                          valid URIs with valid host names
                                          and schemes.When run with the
                                          dryRun option changes are
                                          displayed but are not persisted.
                                          When run with the
                                          serdepropKey/tablePropKey option
                                          updateLocation looks for the
                                          serde-prop-key/table-prop-key
                                          that is specified and updates
                                          its value if found.

С помощью этого инструмента изменение местоположения происходит очень быстро. (возможно, несколько секунд.)

Оставьте эту тему здесь для всех, кто может столкнуться с такой же ситуацией.

person Eugene    schedule 29.08.2019
comment
Вам по-прежнему нужно запускать MSCK REPAIR TABLE после updateLocation? - person apc999; 30.08.2019
comment
@ apc999, честно говоря, эту операцию я не проводил. Подтвердил модификацию двумя способами. 1, проверьте внешнее расположение в улье с помощью 'desc formatted table_name. 2. Проверьте таблицу SDS в хранилище метаданных Mysql. - person Eugene; 30.08.2019
comment
Это звучит интересно - person vikrant rana; 31.08.2019