С помощью этого руководства вы научитесь загружать данные в Managed ClickHouse через JDBC-клиент DBeaver или с использованием clickhouse-client.
Вы будете использовать следующие сервисы:
«Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.
«Публичные IP» — сервис для организации доступа к базе данных через интернет.
Managed ClickHouse — сервис для развертывания и управления кластерами ClickHouse®.
«Подсети» — сервис, позволяющий создавать подсети для размещения в них облачных ресурсов.
VPC — изолированная виртуальная сеть для создания безопасной инфраструктуры.
DNS — сервис по управлению приватными и публичными зонами и их ресурсными записями.
«Группы безопасности» — сервис для контроля трафика виртуальных машин.
Nginx — веб-сервер для проксирования запросов и организации защищенного HTTPS-доступа к приложению.
DBeaver — универсальный клиент баз данных для управления и администрирования SQL и NoSQL СУБД.
Шаги:
Если вы уже зарегистрированы, войдите под своей учетной записью.
Создайте виртуальную сеть с названием VPC-tutorial.
Создайте подсеть со следующими параметрами:
Название — subnet-tutorial.
Зона доступности — ru.AZ-1.
VPC — VPC-tutorial.
Адрес — 10.10.1.0/24.
DNS-серверы — 8.8.8.8.
Создайте новую группу безопасности со следующими параметрами:
Зона доступности — ru.AZ-1.
Название — sg-tutorial.
Добавьте правила входящего и исходящего трафика:
Трафик
Протокол
Порт
Тип источника/адресата
Источник/Адресат
Входящий
TCP
9000
IP-адрес
0.0.0.0/0
Входящий
TCP
8123
IP-адрес
0.0.0.0/0
Исходящий
Любой
—
IP-адрес
0.0.0.0/0
Создайте виртуальную машину со следующими параметрами:
Название — vm-tutorial.
Зона доступности — ru.AZ-1.
Образ — на вкладке Публичные выберите образ Ubuntu 24.04.
Сетевой интерфейс — выберите тип Подсеть с публичным IP.
VPC — VPC-tutorial.
Подсеть — subnet-tutorial.
Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.
Группы безопасности — sg-tutorial и группа безопасности по умолчанию.
Логин — оставьте имя пользователя по умолчанию или укажите новое.
Метод аутентификации — Публичный ключ и Пароль.
Публичный ключ — укажите ключ, созданный ранее.
Пароль — задайте пароль пользователя.
Остальные параметры оставьте по умолчанию или выберите на свое усмотрение.
Создайте кластер Managed ClickHouse со следующими параметрами:
Название кластера — clickhouse_tutorial.
Тип — Single-node.
Зона доступности — ru.AZ-1.
Подсеть — subnet-tutorial.
Убедитесь, что ресурсы созданы и отображаются в личном кабинете:
На странице сервиса VPC отображается сеть web-analytics-VPC со статусом «Создана».
На странице сервиса «Подсети» отображается подсеть subnet-tutorial со статусом «Создана».
На странице сервиса «Группы безопасности» отображается группа безопасности sg- tutorial со статусом «Создана».
На странице сервиса «Виртуальные машины» отображается виртуальная машина vm-tutorial со статусом «Запущена».
На странице сервиса Managed ClickHouse отображается кластер clickhouse_tutorial со статусом «Доступен».
На этом шаге вы настроите систему и nginx-сервер для подключения к базе данных.
Обновите систему:
sudo apt update && sudo apt upgrade -y
Установите nginx и clickhouse-client:
sudo apt install -y nginx-full clickhouse-client
Откройте файл конфигурации для подключения stream-блока:
sudo nano /etc/nginx/nginx.conf
Добавьте блок перед блоком http:
stream {# Native ClickHouse (TCP)upstream ch_native {server <db_private_ip>:9000;}server {listen 9000; proxy_pass ch_native;}# HTTP ClickHouse (для DBeaver / JDBC / BI))upstream ch_http {server <db_private_ip>:8123;}server {listen 8123; proxy_pass ch_http;}}
Где <db_private_ip> — внутренний IP-адрес со страницы информации о кластере из блока Данные для подключения.
Примените конфигурацию:
sudo nginx -tsudo systemctl restart nginx
Создайте пользователя с именем tutorial_user и ролью cloud_admin, сохраните пароль пользователя.
Создайте базу данных с названием tutorial_db.
Подключитесь к базе данных:
Откройте DBeaver и в панели сверху нажмите Новое соединение.
В списке соединений выберите ClickHouse.
Нажмите Далее и заполните поля на вкладке Главное:
Хост — внутренний IP кластера Managed ClickHouse clickhouse-tutorial.
Порт — 8123.
БД/Схема — tutorial_db.
Пользователь — tutorial_user.
Пароль — пароль, заданный при создании пользователя tutorial_user.
Нажмите Тест соединения.
Нажмите Ок.
Инструкция приведена для файла формата CSV. Файлы в форматах TSV и TXT загружаются аналогично.
Создайте файл event.csv с тестовыми данными:
event_date,user_id,event_type,product_id,revenue2024-03-20,1001,view,AB123,02024-03-20,1001,purchase,AB123,29.992024-03-20,1002,view,CD456,02024-03-21,1001,view,CD456,02024-03-21,1003,purchase,EF789,49.992024-03-22,1002,purchase,AB123,29.99
Создайте таблицу с помощью скрипта:
CREATE TABLE tutorial_db.events(event_date Date,user_id UInt32,event_type String,product_id String,revenue Float32)ENGINE = MergeTreeORDER BY (event_date, user_id);
Скрипт можно выполнить в DBeaver или в clickhouse-client, предварительно подключившись к нужной базе данных.
Загрузите данные в таблицу:
Выберите созданное подключение.
Выберите базу данных tutorial_db.
В левом меню на вкладке Таблицы вызовите контекстное меню и выберите Импорт данных.
На вкладке Исходный формат выберите формат исходного файла.
Нажмите Далее.
На вкладке Входные файлы выберите файл event.csv.
Также подходят файлы в форматах CSV, TSV или TXT.
Нажмите Далее.
На вкладке Соответствие столбцов выберите существующую таблицу и настройте маппинг на существующие колонки или создайте новую таблицу со всеми столбцами.
Нажмите Далее.
(Опционально) На вкладке Настройки загрузки данных измените настройки загрузки.
Нажмите Далее.
На вкладке Подтвердить проверьте все настройки источника и цели.
Нажмите Продолжить.
Дождитесь окончания и проверьте загрузку данных:
select * from tutorial_db.events;
Инструкция приведена для файла в формате JSONEachRow. Файл в формате JSON загружается аналогично.
Создайте файл data.json с тестовыми данными в формате JSONEachRow:
[{"id": 1, "name": "Item1", "value": 10.5, "date": "2023-01-01", "category": "A"},{"id": 2, "name": "Item2", "value": 20.3, "date": "2023-01-02", "category": "B"},{"id": 3, "name": "Item3", "value": 30.7, "date": "2023-01-03", "category": "C"},{"id": 4, "name": "Item4", "value": 40.1, "date": "2023-01-04", "category": "A"},{"id": 5, "name": "Item5", "value": 50.9, "date": "2023-01-05", "category": "B"}]
Создайте таблицу с помощью скрипта:
CREATE TABLE tutorial_db.data(id UInt32,name String,value Float64,date Date,category Enum ('A', 'B', 'C'))ENGINE = MergeTree()ORDER BY id;
Скрипт можно выполнить в DBeaver или в clickhouse-client, предварительно подключившись к нужной базе данных.
Для загрузки данных через clickhouse-client предварительно скопируйте файл на сервер ClickHouse®:
С виртуальной машины подключитесь к узлу ClickHouse® внутри кластера:
ssh <node_user>@<node_ip_or_hostname>
Где:
<node_user> — имя пользователя узла ClickHouse®.
<node_ip_or_hostname> — IP-адрес или доменное имя одного из узлов кластера.
Создайте директорию для хранения входящего файла на узле ClickHouse®:
mkdir -p /var/lib/clickhouse/incoming && sudo chmod -R 755 /var/lib/clickhouse/incoming
Скопируйте файл с локального компьютера на узел ClickHouse® через виртуальную машину:
Чтобы перенести файл на виртуальную машину, на локальном ПК выполните команду:
scp path/to/local/file.json <username>@<vm_ip_or_hostname>:/tmp/
Где:
path/to/local/file.json — путь к файлу на вашем локальном компьютере.
<username> — имя пользователя виртуальной машины.
<vm_ip_or_hostname> — публичный IP-адрес или доменное имя виртуальной машины.
Чтобы переместить файл с виртуальной машины на узел ClickHouse®, находясь на виртуальной машине, выполните:
scp /tmp/file.json <node_user>@<node_ip_or_hostname>:/var/lib/clickhouse/incoming/
Где:
/tmp/file.json — путь к файлу на виртуальной машине.
<node_user> — имя пользователя узла ClickHouse®.
<node_ip_or_hostname> — IP-адрес или доменное имя одного из узлов кластера.
Чтобы проверить наличие файла, переподключитесь к узлу кластера ClickHouse® и убедитесь, что файл передан:
ls -lh /var/lib/clickhouse/incoming/
Загрузите данные из файла в заранее подготовленную таблицу:
clickhouse-client --query="INSERT INTO tutorial_db.data FORMAT JSONEachRow " < /var/lib/clickhouse/incoming/data.json
Для повышения безопасности удалите доступ по SSH для вашей виртуальной машины, так как он больше не требуется.
В личном кабинете перейдите в сервис «Виртуальные машины» и выберите машину vm-tutorial, созданную на первом шаге.
Перейдите на вкладку Сетевые параметры.
В правом верхнем углу блока нужного сетевого интерфейса нажмите и выберите Изменить группы безопасности.
В поле Группы безопасности удалите группу SSH-access_ru.
Нажмите Сохранить.
Убедитесь, что доступа нет — попробуйте подключиться к виртуальной машине по SSH.
Вы научились подключаться к базам данных Managed ClickHouse для загрузки данных с помощью JDBC-клиента DBeaver или с использованием clickhouse-client, а также загружать данные из файлов в форматах CSV, TSV, TXT, JSON, JSONEachRow в базу данных.
Подробнее в официальной документации ClickHouse®: