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

Это удобно, когда нет встроенного движка интеграции, табличной функции или внешнего словаря для доступного источника данных, но существует JDBC драйвер для источника данных.
Вы можете использовать ClickHouse JDBC Bridge как для чтения, так и для записи. И одновременно для нескольких внешних источников данных, например, вы можете выполнять распределенные запросы в ClickHouse по нескольким внешним и внутренним источникам данных в реальном времени.
В этом уроке мы покажем, как легко установить, настроить и запустить ClickHouse JDBC Bridge, чтобы подключить ClickHouse к внешнему источнику данных. В качестве внешнего источника данных для этого урока мы будем использовать MySQL.
Давайте начнем!
У вас есть доступ к машине, где установлены:
- Unix оболочка и доступ в интернет
- wget
- актуальная версия Java (например, OpenJDK версии >= 17)
- актуальная версия MySQL (например, MySQL версии >= 8), установленная и работающая
- актуальная версия ClickHouse установленная и работающая
Установка ClickHouse JDBC Bridge локально
Самый простой способ использовать ClickHouse JDBC Bridge — установить и запустить его на том же хосте, где работает ClickHouse:
Давайте начнем с подключения к Unix оболочке на машине, где работает 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 в фоновом режиме. Чтобы остановить Bridge вы можете вернуть окно Unix оболочки выше на передний план и нажать CTRL+C
.
Использование JDBC подключения изнутри ClickHouse
Теперь ClickHouse может получить доступ к данным MySQL, используя либо jdbc table function, либо JDBC table engine.
Самый простой способ выполнить следующие примеры — скопировать и вставить их в clickhouse-client
или в Play UI.
- jdbc Табличная Функция:
В качестве первого параметра для jdbc табличной функции мы используем имя источника данных, который мы настроили выше.
- JDBC Табличный Движок:
В качестве первого параметра для статьи jdbc движка мы используем имя источника данных, который мы настроили выше.
Схема таблицы ClickHouse JDBC engine и схема подключенной таблицы MySQL должны совпадать, например, имена столбцов и порядок должны быть одинаковыми, а типы данных столбцов должны быть совместимыми.
Установка ClickHouse JDBC Bridge внешне
Для распределенного кластера ClickHouse (кластера с более чем одним хостом ClickHouse) имеет смысл установить и запустить ClickHouse JDBC Bridge внешне на отдельном хосте:

Это имеет то преимущество, что каждый хост ClickHouse может получить доступ к JDBC Bridge. В противном случае, JDBC Bridge должен был бы быть установлен локально для каждой инстанции ClickHouse, которая должна получать доступ к внешним источникам данных через этот мост.
Чтобы установить 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, то вам нужно соответственно адаптировать конфигурацию выше