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

Подключение ClickHouse к внешним источникам данных с помощью JDBC

примечание

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

Обзор: Мост JDBC ClickHouse в сочетании с jdbc table function или JDBC table engine позволяет ClickHouse получать доступ к данным из любого внешнего источника данных, для которого доступен драйвер JDBC:

Мост JDBC ClickHouse

Это удобно, когда нет встроенного интеграционного движка, функции таблицы или внешнего словаря для доступного внешнего источника данных, но драйвер JDBC для источника данных существует.

Вы можете использовать мост JDBC ClickHouse как для чтения, так и для записи. И параллельно для нескольких внешних источников данных, например, вы можете выполнять распределенные запросы в ClickHouse одновременно на нескольких внешних и внутренних источниках данных в реальном времени.

В этом уроке мы покажем вам, как легко установить, настроить и запустить мост JDBC ClickHouse, чтобы подключить ClickHouse к внешнему источнику данных. Мы будем использовать MySQL в качестве внешнего источника данных для этого урока.

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

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

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

  1. Unix shell и доступ в интернет
  2. wget
  3. актуальная версия Java (например, OpenJDK версия >= 17)
  4. актуальная версия MySQL (например, MySQL версия >= 8), установленная и работающая
  5. актуальная версия ClickHouse установленная и работающая

Установка моста JDBC ClickHouse локально

Самый простой способ использования моста JDBC ClickHouse — установить и запустить его на том же хосте, где работает ClickHouse:Мост JDBC 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 на отдельном хосте:

Мост 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, вам необходимо соответствующим образом адаптировать конфигурацию выше