Перейти к основному содержимому
Перейти к основному содержимому

Подключение 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.

Давайте начнем!

Предварительные условия

У вас есть доступ к машине, где установлены:

  1. Unix оболочка и доступ в интернет
  2. wget
  3. актуальная версия Java (например, OpenJDK версии >= 17)
  4. актуальная версия MySQL (например, MySQL версии >= 8), установленная и работающая
  5. актуальная версия 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 внешне, мы выполняем следующие шаги:

  1. Мы устанавливаем, настраиваем и запускаем ClickHouse JDBC Bridge на выделенном хосте, следуя шагам, описанным в разделе 1 этого руководства.

  2. На каждом хосте ClickHouse мы добавляем следующий конфигурационный блок в конфигурацию сервера ClickHouse (в зависимости от вашего выбранного формата конфигурации, используйте либо версию XML, либо YAML):

примечание
  • вам нужно заменить JDBC-Bridge-Host на имя хоста или IP-адрес выделенного хоста ClickHouse JDBC Bridge
  • мы указали порт по умолчанию для ClickHouse JDBC Bridge 9019, если вы используете другой порт для JDBC Bridge, то вам нужно соответственно адаптировать конфигурацию выше