Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

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

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

Диаграмма архитектуры ClickHouse JDBC Bridge

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

ClickHouse JDBC Bridge можно использовать как для чтения, так и для записи. Также его можно использовать параллельно для нескольких внешних источников данных: например, вы можете выполнять в ClickHouse распределённые запросы к нескольким внешним и внутренним источникам данных в реальном времени.

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

Начнём!

Установите ClickHouse JDBC Bridge локально

Самый простой способ использовать ClickHouse JDBC Bridge — установить и запустить его на том же хосте, где работает ClickHouse:

Схема локального развертывания ClickHouse JDBC Bridge

Для начала подключитесь к Unix shell на машине, где работает ClickHouse, и создайте локальную папку, в которую позже будет установлен ClickHouse JDBC Bridge (папку можно назвать как угодно и разместить где угодно):

mkdir ~/clickhouse-jdbc-bridge

Теперь загрузим в эту папку актуальную версию ClickHouse JDBC Bridge:

cd ~/clickhouse-jdbc-bridge
wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v2.0.7/clickhouse-jdbc-bridge-2.0.7-shaded.jar

Чтобы подключиться к MySQL, создадим именованный источник данных:

 cd ~/clickhouse-jdbc-bridge
 mkdir -p config/datasources
 touch config/datasources/mysql8.json

Теперь вы можете скопировать следующую конфигурацию и вставить её в файл ~/clickhouse-jdbc-bridge/config/datasources/mysql8.json:

 {
   "mysql8": {
   "driverUrls": [
     "https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar"
   ],
   "jdbcUrl": "jdbc:mysql://<host>:<port>",
   "username": "<username>",
   "password": "<password>"
   }
 }

Теперь мы готовы запустить ClickHouse JDBC Bridge:

 cd ~/clickhouse-jdbc-bridge
 java -jar clickhouse-jdbc-bridge-2.0.7-shaded.jar

Использование JDBC-подключения в ClickHouse

Теперь ClickHouse может получать доступ к данным MySQL либо с помощью табличной функции jdbc, либо с помощью движка таблицы JDBC.

Проще всего выполнить следующие примеры, если скопировать и вставить их в clickhouse-client или в интерфейс Play.

  • Табличная функция jdbc:
 SELECT * FROM jdbc('mysql8', 'mydatabase', 'mytable');
  • Движок таблицы JDBC:
 CREATE TABLE mytable (
      <column> <column_type>,
      ...
 )
 ENGINE = JDBC('mysql8', 'mydatabase', 'mytable');

 SELECT * FROM mytable;

Установка ClickHouse JDBC Bridge на отдельном хосте

Для распределённого кластера ClickHouse (то есть кластера с более чем одним хостом ClickHouse) имеет смысл установить и запускать ClickHouse JDBC Bridge отдельно, на собственном хосте:

Схема развертывания ClickHouse JDBC Bridge на отдельном хосте

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

Чтобы установить ClickHouse JDBC Bridge отдельно, выполните следующие шаги:

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

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

<jdbc_bridge>
   <host>JDBC-Bridge-Host</host>
   <port>9019</port>
</jdbc_bridge>
Navigation