Как запустить MSCK на сервере Hive Standalone Metastore через комиссионный клиент

Я использую Hive в качестве базы данных хранилища метаданных и автономное хранилище метаданных Hive для работы с DDL через этот экономный клиент, реализующий сопоставление экономичности серверов.

Я хочу выполнить MSCK (или какой-либо другой подобный метод), чтобы массово добавить разделы в новые таблицы Hive.

Но на самом деле, это сопоставление Thrift файл не предоставляет метод msck. Хотя я вижу, что в Msck что-то реализовано внутри автономного сервера (я думаю, что это должно было быть реализовано в jira HIVE-17824). Но в классе HiveMetastore его нет (как я понял, это сопоставление методов сервера Thrift).

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


person Lucas Mendes Mota Da Fonseca    schedule 11.01.2021    source источник


Ответы (1)


С python я в настоящее время успешно использую этот клиент: PyHive.

И из dbeaver вы также можете сделать это (если команда должна быть запущена человеком): dbeaver .

РЕДАКТИРОВАТЬ (я не понял, что вопрос был об отправке команды непосредственно в хранилище метаданных улья):

Интерфейс называется IMetaStoreClient (протокол между клиентом hive и сервером хранилища метаданных hive) не реализует команду MSCK, поскольку она ему не нужна. Позвольте мне объяснить логику команды MSCK:

  1. Проверьте, существует ли таблица в хранилище метаданных куста.

  2. Сканировать новые разделы в физической файловой системе, где таблица хранит свои данные. См. код checkMetastore.

  3. Создайте/добавьте эти новые разделы. См. код createPartitionsInBatches. Этот код завершается использованием метода add_partitions клиента хранилища метаданных куста.

    См. add_partitions. В этот момент и не раньше, чем клиентское приложение отправит данные на сервер хранилища метаданных куста.

  4. Удалите разделы, которых больше нет в файловой системе. См. код dropPartitionsInBatches, в результате чего используется метод dropPartitions клиента хранилища метаданных улья.

    См. dropPartitions. Опять же, именно в этот момент, а не раньше, клиентское приложение отправляет данные на сервер хранилища метаданных куста.

MSCK на самом деле не является командой хранилища метаданных улья. Для этого требуется логика, реализованная клиентом, выполняющим эту команду MSCK. В вашем случае вы должны добавить эту логику к клиенту, который вы хотите использовать.

Например, Spark уже реализует эту логику при использовании MSCK.

person Gooseman    schedule 16.01.2021
comment
Я подключаюсь через Hive Metastore (без HiveServer). Эта библиотека PyHive использует HiveServer; а с HiverServer можно запустить команду msck. Вопрос в том, как запустить через комиссионный клиент на автономном сервере метахранилищ (порт 9083). - person Lucas Mendes Mota Da Fonseca; 18.01.2021
comment
@LucasMendesMotaDaFonseca извините, я не знал, что речь идет об отправке команды непосредственно в хранилище метаданных улья. Я только что отредактировал свой ответ. Надеюсь, это будет полезно. - person Gooseman; 18.01.2021
comment
спс за разъяснения. Я не уверен, что понял. Но я вижу, что эта логика MSCK может быть изначально реализована на сервере хранилища метаданных куста, wdyt? (у нас будут команды раздела на сервере бережливости и путь S3 в таблице DDL) - person Lucas Mendes Mota Da Fonseca; 18.01.2021
comment
Клиенты @LucasMendesMotaDaFonseca должны реализовать этот интерфейс: IMetaStoreClient.java. Этот интерфейс не имеет метода с именем MSCK. Сказано по-другому: протокол между клиентом хранилища метаданных и сервером хранилища метаданных не реализует метод MSCK. - person Gooseman; 19.01.2021