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

Подключение 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 в качестве внешнего источника данных для этого урока.

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

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

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

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

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

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

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