Экспорт и импорт метаданных Hive в кластере Apache Hive™ Metastore
Перед началом работы
- Создайте сервисный аккаунт
my-accountc ролямиstorage.uploaderиmanaged-metastore.integrationProvider. - Настройте сеть и создайте кластер Apache Hive™ Metastore. При создании укажите сервисный аккаунт
my-account. - Создайте бакет в Yandex Object Storage. В нем будет храниться файл с метаданными для импорта и экспорта.
- Выдайте разрешение
READ и WRITEсервисному аккаунтуmy-accountна созданный бакет.
Подробнее о подключении к бакету, в котором настроены политики доступа, см. в инструкции.
Экспорт данных
-
Перейдите на страницу каталога
и выберите сервис Yandex MetaData Hub. -
На панели слева выберите
Metastore-сервер. -
Нажмите на значок
для нужного кластера и выберите пункт Экспорт. -
В открывшемся окне укажите:
- Созданный ранее бакет, куда будут экспортированы данные кластера.
- Название файла
.sql, куда будут записаны данные кластера. Если файл с таким названием уже существует, он будет перезаписан.
-
Нажмите кнопку Экспортировать.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы экспортировать метаданные из кластера Apache Hive™ Metastore, выполните команду:
yc managed-metastore cluster export-data <имя_или_идентификатор_кластера> \
--bucket <имя_бакета> \
--filepath <файл_для_данных>
Где:
--bucket— cозданный ранее бакет, куда будут экспортированы данные кластера.--filepath— путь к файлу.sql, в который будут записаны данные кластера. Если файл с таким названием уже существует, он будет перезаписан.
Идентификатор и имя кластера можно запросить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.ExportData и выполните запрос, например с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://metastore.api.cloud.yandex.net/managed-metastore/v1/clusters/<идентификатор_кластера>:export' \ --data '{ "bucket": "<имя_бакета>", "filepath": "<файл_для_данных>" }'Где:
bucket— cозданный ранее бакет, куда будут экспортированы данные кластера.filepath— путь к файлу.sql, в который будут записаны данные кластера. Если файл с таким названием уже существует, он будет перезаписан.
Идентификатор и имя кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.ExportData и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/metastore/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "bucket": "<имя_бакета>", "filepath": "<файл_для_данных>" }' \ metastore.api.cloud.yandex.net:443 \ yandex.cloud.metastore.v1.ClusterService.ExportDataГде:
bucket— cозданный ранее бакет, куда будут экспортированы данные кластера.filepath— путь к файлу.sql, в который будут записаны данные кластера. Если файл с таким названием уже существует, он будет перезаписан.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Импорт данных
Перед импортом загрузите файл .sql с метаданными в cозданный ранее бакет. О том, как подготовить файл и как устроен процесс импорта, читайте в разделе Перенос метаданных между кластерами Yandex Data Processing с помощью Apache Hive™ Metastore.
Чтобы импортировать данные в кластер Apache Hive™ Metastore:
- Перейдите на страницу каталога
и выберите сервис Yandex MetaData Hub. - На панели слева выберите
Metastore-сервер. - Нажмите на значок
для нужного кластера и выберите пункт Импорт. - В открывшемся окне выберите cозданный ранее бакет и файл, откуда будут импортированы данные кластера.
- Нажмите кнопку Импортировать.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы импортировать метаданные в кластер Apache Hive™ Metastore, выполните команду:
yc managed-metastore cluster import-data <имя_или_идентификатор_кластера> \
--bucket <имя_бакета> \
--filepath <файл_c_данными>
Где:
--bucket— cозданный ранее бакет, откуда будут импортированы данные кластера.--filepath— путь к файлу.sql, из которого будут импортированы данные кластера.
Идентификатор и имя кластера можно запросить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.ImportData и выполните запрос, например с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://metastore.api.cloud.yandex.net/managed-metastore/v1/clusters/<идентификатор_кластера>:import' \ --data '{ "bucket": "<имя_бакета>", "filepath": "<файл_c_данными>" }'Где:
bucket— cозданный ранее бакет, откуда будут импортированы данные кластера.filepath— путь к файлу.sql, из которого будут импортированы данные кластера.
Идентификатор и имя кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.ImportData и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/metastore/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "bucket": "<имя_бакета>", "filepath": "<файл_c_данными>" }' \ metastore.api.cloud.yandex.net:443 \ yandex.cloud.metastore.v1.ClusterService.ImportDataГде:
bucket— cозданный ранее бакет, куда будут экспортированы данные кластера.filepath— путь к файлу.sql, в который будут записаны данные кластера. Если файл с таким названием уже существует, он будет перезаписан.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Apache® и Apache Hive™