Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Conectar ClickHouse con fuentes de datos externas mediante JDBC

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:

Diagrama de arquitectura de ClickHouse JDBC Bridge

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:

Diagrama de implementación local de ClickHouse JDBC Bridge

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-bridge

Ahora 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.jar

Para 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.json

Ahora 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.jar

Usar 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:

Diagrama de implementación externa de ClickHouse JDBC Bridge

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:

  1. Instale, configure y ejecute ClickHouse JDBC Bridge en un host dedicado siguiendo los pasos descritos en la sección 1 de esta guía.

  2. 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>
Navigation