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

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