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

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

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