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

Это удобно, когда для внешнего источника данных нет встроенного движка интеграции, табличной функции или внешнего словаря, но для этого источника доступен JDBC-драйвер.
ClickHouse JDBC Bridge можно использовать как для чтения, так и для записи. Также его можно использовать параллельно для нескольких внешних источников данных: например, вы можете выполнять в ClickHouse распределённые запросы к нескольким внешним и внутренним источникам данных в реальном времени.
В этом уроке мы покажем, как легко установить, настроить и запустить ClickHouse JDBC Bridge, чтобы подключить ClickHouse к внешнему источнику данных. В качестве внешнего источника данных в этом уроке мы будем использовать MySQL.
Начнём!
Установите ClickHouse JDBC Bridge локально
Самый простой способ использовать ClickHouse JDBC Bridge — установить и запустить его на том же хосте, где работает ClickHouse:

Для начала подключитесь к 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. В противном случае JDBC Bridge пришлось бы устанавливать локально на каждом экземпляре ClickHouse, которому нужен доступ к внешним источникам данных через Bridge.
Чтобы установить ClickHouse JDBC Bridge отдельно, выполните следующие шаги:
-
Установите, настройте и запустите ClickHouse JDBC Bridge на выделенном хосте, следуя шагам, описанным в разделе 1 этого руководства.
-
На каждом хосте ClickHouse добавьте следующий блок конфигурации в конфигурацию сервера ClickHouse (в зависимости от выбранного формата конфигурации используйте вариант XML или YAML):
<jdbc_bridge>
<host>JDBC-Bridge-Host</host>
<port>9019</port>
</jdbc_bridge>jdbc_bridge:
host: JDBC-Bridge-Host
port: 9019