Подключение ClickHouse к внешним источникам данных с помощью JDBC
Использование JDBC требует наличия моста ClickHouse JDBC, поэтому вам нужно использовать clickhouse-local
на локальной машине для передачи данных из вашей базы данных в ClickHouse Cloud. Посетите страницу Использование clickhouse-local в разделе Миграция документации для получения деталей.
Обзор: ClickHouse JDBC Bridge в сочетании с табличной функцией jdbc или JDBC движком таблицы позволяет ClickHouse получать доступ к данным из любого внешнего источника данных, для которого доступен JDBC драйвер:

Это удобно, когда для внешнего источника данных нет встроенного движка интеграции, табличной функции или внешнего словаря, но существует JDBC драйвер для источника данных.
Вы можете использовать ClickHouse JDBC Bridge как для чтения, так и для записи. И параллельно для нескольких внешних источников данных, например, вы можете запускать распределенные запросы в ClickHouse по нескольким внешним и внутренним источникам данных в реальном времени.
В этом уроке мы покажем, насколько легко установить, настроить и запустить ClickHouse JDBC Bridge, чтобы подключить ClickHouse к внешнему источнику данных. В качестве внешнего источника данных мы используем MySQL.
Давайте начнем!
У вас есть доступ к машине, на которой:
- имеется Unix shell и доступ в интернет
- установлен wget
- установлена текущая версия Java (например, OpenJDK версии >= 17)
- установлена и запущена текущая версия MySQL (например, MySQL версии >= 8)
- установлена и запущена текущая версия ClickHouse установлена
Установка ClickHouse JDBC Bridge локально
Самый простой способ использовать ClickHouse JDBC Bridge — установить и запустить его на том же хосте, где работает ClickHouse:

Давайте начнем с подключения к Unix shell на машине, где работает ClickHouse, и создадим локальную папку, в которую мы позже установим ClickHouse JDBC Bridge (вы можете назвать папку как угодно и разместить её в любом месте):
Теперь мы загрузим текущую версию ClickHouse JDBC Bridge в эту папку:
Чтобы иметь возможность подключиться к MySQL, мы создаем именованный источник данных:
Теперь вы можете скопировать и вставить следующую конфигурацию в файл ~/clickhouse-jdbc-bridge/config/datasources/mysql8.json
:
в конфигурационном файле выше
- вы можете использовать любое имя для источника данных, мы использовали
mysql8
- в значении для
jdbcUrl
вам нужно заменить<host>
и<port>
на соответствующие значения в соответствии с вашей работающей инстанцией MySQL, например"jdbc:mysql://localhost:3306"
- вам нужно заменить
<username>
и<password>
на ваши учетные данные MySQL, если вы не используете пароль, вы можете удалить строку"password": "<password>"
в конфигурационном файле выше - в значении для
driverUrls
мы просто указали URL, по которому можно загрузить текущую версию MySQL JDBC драйвера. Это всё, что нам нужно сделать, и ClickHouse JDBC Bridge автоматически загрузит этот JDBC драйвер (в ОС-специфический каталог).
Теперь мы готовы запустить ClickHouse JDBC Bridge:
Мы запустили ClickHouse JDBC Bridge в режиме foreground. Чтобы остановить Bridge, вы можете вернуть приложение Unix shell из выше и нажать CTRL+C
.
Использование JDBC соединения из ClickHouse
Теперь ClickHouse может получить доступ к данным MySQL, используя либо табличную функцию jdbc, либо JDBC движок таблицы.
Самый простой способ выполнить следующие примеры — скопировать и вставить их в clickhouse-client
или в Play UI.
- jdbc Табличная функция:
В качестве первого параметра для jdbc табличной функции мы используем имя именованного источника данных, который мы настроили выше.
- JDBC Движок таблицы:
В качестве первого параметра для клаузи jdbc engine мы используем имя именованного источника данных, который мы настроили выше.
Схема таблицы ClickHouse JDBC engine и схема подключенной таблицы MySQL должны совпадать, например, имена и порядок столбцов должны быть одинаковыми, а типы данных столбцов должны быть совместимыми.
Установка ClickHouse JDBC Bridge снаружи
Для распределенного кластера ClickHouse (кластера с более чем одной хостом ClickHouse) имеет смысл установить и запустить ClickHouse JDBC Bridge на отдельном хосте:

Это имеет преимущество, что каждый хост ClickHouse может получить доступ к JDBC Bridge. В противном случае JDBC Bridge нужно было бы устанавливать локально для каждой инстанции ClickHouse, которая должна получать доступ к внешним источникам данных через Bridge.
Чтобы установить ClickHouse JDBC Bridge снаружи, мы выполняем следующие шаги:
-
Мы устанавливаем, настраиваем и запускаем ClickHouse JDBC Bridge на выделенном хосте, следуя шагам, описанным в разделе 1 этого руководства.
-
На каждом хосте ClickHouse мы добавляем следующий блок конфигурации в конфигурацию сервера ClickHouse (в зависимости от выбранного вами формата конфигурации используйте версию XML или YAML):
- XML
- YAML
- вам нужно заменить
JDBC-Bridge-Host
на имя хоста или IP-адрес выделенного хоста ClickHouse JDBC Bridge - мы указали порт по умолчанию для ClickHouse JDBC Bridge
9019
, если вы используете другой порт для JDBC Bridge, вам необходимо адаптировать конфигурацию выше соответствующим образом