Сохранение потока данных Yandex Data Streams в Yandex Managed Service for ClickHouse
С помощью сервиса Data Transfer вы можете поставлять данные из потока Data Streams в сервис Managed Service for ClickHouse.
Чтобы перенести данные:
- Подготовьте поток данных Data Streams.
- Подготовьте и активируйте трансфер.
- Проверьте работоспособность трансфера.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Подготовьте инфраструктуру:
-
Создайте базу данных Managed Service for YDB любой подходящей конфигурации.
-
Создайте кластер Managed Service for ClickHouse любой подходящей конфигурации.
-
Создайте эндпоинт для приемника:
-
Тип базы данных —
ClickHouse
. -
Параметры эндпоинта:
-
Настройки подключения:
-
Тип подключения —
Кластер Managed Service for ClickHouse
.- Кластер Managed Service for ClickHouse — выберите кластер-приемник из списка.
-
База данных — укажите имя базы данных.
-
Пользователь и Пароль — укажите имя и пароль пользователя с доступом к базе, например, владельца базы данных.
-
-
-
-
Если у вас еще нет Terraform, установите и настройте его.
-
Скачайте файл с настройками провайдера. Поместите его в отдельную рабочую директорию и укажите значения параметров.
-
Скачайте в ту же рабочую директорию файл конфигурации data-transfer-yds-mch.tf.
В этом файле описаны:
- база данных Managed Service for YDB;
- сервисный аккаунт с ролью
yds.editor
; - сеть;
- подсеть;
- группа безопасности и правила, необходимые для подключения к кластеру Managed Service for ClickHouse из интернета;
- кластер-приемник Managed Service for ClickHouse;
- эндпоинт для приемника;
- трансфер.
-
Укажите в файле
data-transfer-yds-mch.tf
:folder_id
— идентификатор каталога, в котором будут созданы ресурсы.sa_name
— имя сервисного аккаунта для использования в эндпоинтах.source_db_name
— имя базы данных Managed Service for YDB.target_db_name
— имя базы данных ClickHouse.target_user
иtarget_password
— имя и пароль пользователя-владельца базы данных ClickHouse.transfer_enabled
– значение0
, чтобы не создавать трансфер до создания эндпоинта-источника вручную.
-
Выполните команду
terraform init
в директории с конфигурационным файлом. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.
-
Подготовьте поток данных Data Streams
- Создайте поток данных Data Streams.
- Отправьте в поток тестовые данные. В качестве сообщения используйте данные от сенсоров автомобиля в формате JSON:
{
"device_id":"iv9a94th6rztooxh5ur2",
"datetime":"2022-06-05 17:27:00",
"latitude":55.70329032,
"longitude":37.65472196,
"altitude":427.5,
"speed":0,
"battery_voltage":"23.5",
"cabin_temperature":17,
"fuel_level":null
}
Подготовьте и активируйте трансфер
-
Создайте эндпоинт для источника:
-
Тип базы данных —
Yandex Data Streams
. -
Параметры эндпоинта:
-
Настройки подключения:
- База данных — выберите базу данных Managed Service for YDB из списка.
- Поток — укажите имя потока Data Streams.
- Сервисный аккаунт — выберите или создайте сервисный аккаунт с ролью
yds.editor
.
-
Расширенные настройки → Правила конвертации:
- Формат данных —
JSON
. - Схема данных – Вы можете задать схему двумя способами:
-
Список полей
.Задайте список полей топика вручную:
Имя Тип Ключ device_id
STRING
Да datetime
DATETIME
latitude
DOUBLE
longitude
DOUBLE
altitude
DOUBLE
speed
DOUBLE
battery_voltage
ANY
cabin_temperature
DOUBLE
fuel_level
ANY
-
JSON спецификация
.Создайте и загрузите файл схемы данных в формате JSON
json_schema.json
:json_schema.json[ { "name": "device_id", "type": "string", "key": true }, { "name": "datetime", "type": "datetime" }, { "name": "latitude", "type": "double" }, { "name": "longitude", "type": "double" }, { "name": "altitude", "type": "double" }, { "name": "speed", "type": "double" }, { "name": "battery_voltage", "type": "any" }, { "name": "cabin_temperature", "type": "double" }, { "name": "fuel_level", "type": "any" } ]
-
- Формат данных —
-
-
-
Создайте трансфер:
ВручнуюС помощью Terraform- Создайте трансфер типа Репликация, использующий созданные эндпоинты.
- Активируйте его.
-
Укажите в файле
data-transfer-yds-mch.tf
переменные:source_endpoint_id
— значение идентификатора эндпоинта для источника;transfer_enabled
– значение1
для создания трансфера.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Трансфер активируется автоматически после создания.
-
Проверьте работоспособность трансфера
-
Дождитесь перехода трансфера в статус Реплицируется.
-
Отправьте в поток Data Streams новое сообщение:
{ "device_id":"rhibbh3y08qmz3sdbrbu", "datetime":"2022-06-06 09:49:54", "latitude":55.71294467, "longitude":37.66542005, "altitude":429.13, "speed":55.5, "battery_voltage":null, "cabin_temperature":18, "fuel_level":32 }
-
Убедитесь, что в базу данных кластера Managed Service for ClickHouse перенеслись данные из потока Data Streams:
- Подключитесь к кластеру-приемнику Managed Service for ClickHouse.
- Проверьте, что в базе ClickHouse существует таблица с именем созданного потока Data Streams с теми же колонками, что и схема данных в эндпоинте-источнике, и отправленными тестовыми данными.
Удалите созданные ресурсы
Примечание
Перед тем как удалить созданные ресурсы, деактивируйте трансфер.
Если созданные ресурсы вам больше не нужны, удалите их:
-
Удалите ресурсы в зависимости от способа их создания:
ВручнуюС помощью Terraform-
В терминале перейдите в директорию с планом инфраструктуры.
-
Удалите конфигурационный файл
data-transfer-yds-mch.tf
. -
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Все ресурсы, которые были описаны в конфигурационном файле
data-transfer-yds-mch.tf
, будут удалены. -
-
-
Удалите эндпоинт для источника.