Descripción general: ClickHouse JDBC Bridge, en combinación con la función de tabla jdbc o el motor de tabla JDBC o el motor de integración, permite a ClickHouse acceder a datos desde cualquier fuente de datos externa para la que haya un controlador JDBC disponible:

Esto resulta útil cuando no hay disponible ningún motor de integración, función de tabla o diccionario externo nativo para la fuente de datos externa, pero sí existe un controlador JDBC para esa fuente de datos.
Puede usar ClickHouse JDBC Bridge tanto para lecturas como para escrituras. También puede usarlo en paralelo con múltiples fuentes de datos externas; por ejemplo, puede ejecutar consultas distribuidas en ClickHouse sobre múltiples fuentes de datos externas e internas en tiempo real.
En esta lección le mostraremos lo fácil que es instalar, configurar y ejecutar ClickHouse JDBC Bridge para conectar ClickHouse con una fuente de datos externa. Usaremos MySQL como fuente de datos externa para esta lección.
¡Empecemos!
Instale ClickHouse JDBC Bridge localmente
La forma más sencilla de usar ClickHouse JDBC Bridge es instalarlo y ejecutarlo en el mismo host en el que también se ejecuta ClickHouse:

Comencemos por conectarnos a la shell de Unix en la máquina donde se ejecuta ClickHouse y crear una carpeta local en la que más adelante instalaremos ClickHouse JDBC Bridge (puede ponerle el nombre que quiera y ubicarla donde prefiera):
mkdir ~/clickhouse-jdbc-bridgeAhora descargamos la versión más reciente de ClickHouse JDBC Bridge en esa carpeta:
cd ~/clickhouse-jdbc-bridge
wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v2.0.7/clickhouse-jdbc-bridge-2.0.7-shaded.jarPara poder conectarnos a MySQL, vamos a crear una fuente de datos con nombre:
cd ~/clickhouse-jdbc-bridge
mkdir -p config/datasources
touch config/datasources/mysql8.jsonAhora puede copiar y pegar la siguiente configuración en el archivo ~/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>"
}
}Ahora ya estamos listos para iniciar ClickHouse JDBC Bridge:
cd ~/clickhouse-jdbc-bridge
java -jar clickhouse-jdbc-bridge-2.0.7-shaded.jarUsar la conexión JDBC desde ClickHouse
Ahora ClickHouse puede acceder a los datos de MySQL mediante la función de tabla jdbc o el motor de tabla JDBC.
La forma más sencilla de ejecutar los siguientes ejemplos es copiarlos y pegarlos en clickhouse-client o en la UI de Play.
- Función de tabla jdbc:
SELECT * FROM jdbc('mysql8', 'mydatabase', 'mytable');- Motor de tabla JDBC:
CREATE TABLE mytable (
<column> <column_type>,
...
)
ENGINE = JDBC('mysql8', 'mydatabase', 'mytable');
SELECT * FROM mytable;Instalar ClickHouse JDBC Bridge externamente
Para un clúster distribuido de ClickHouse (un clúster con más de un host de ClickHouse), tiene sentido instalar y ejecutar ClickHouse JDBC Bridge externamente en su propio host:

Esto tiene la ventaja de que cada host de ClickHouse puede acceder a ClickHouse JDBC Bridge. De lo contrario, ClickHouse JDBC Bridge tendría que instalarse localmente en cada instancia de ClickHouse que necesite acceder a fuentes de datos externas a través del Bridge.
Para instalar ClickHouse JDBC Bridge externamente, siga estos pasos:
-
Instale, configure y ejecute ClickHouse JDBC Bridge en un host dedicado siguiendo los pasos descritos en la sección 1 de esta guía.
-
En cada host de ClickHouse, añada el siguiente bloque de configuración a la configuración del servidor de ClickHouse (según el formato de configuración que haya elegido, use la versión XML o YAML):
<jdbc_bridge>
<host>JDBC-Bridge-Host</host>
<port>9019</port>
</jdbc_bridge>jdbc_bridge:
host: JDBC-Bridge-Host
port: 9019