es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de conexión del controlador JDBC de Clickhouse.

Estamos intentando conectarnos a un servidor de ClickHouse utilizando controladores JDBC. Nuestro fragmento de código está en Scala y no sería muy diferente en Java.

import java.sql.{ Connection, DriverManager}
import java.util.Properties
Class.forName(“ru.yandex.clickhouse.ClickHouseDriver”)
var conn : Connection = null
try {
conn = DriverManager.getConnection(“jdbc:clickhouse://xxxxxx:9001/db_name”, “usrname”, “pass”)
val stmt = conn.createStatement()
val sql =s”””select 1″””.stripMargin
stmt.executeQuery(sql)
} finally {
if(conn != null)
conn.close()
}

Obtenemos el siguiente error:

ClickHouseUnknownException: Excepción de ClickHouse, código: 1002, host: xxxxxxx, puerto: 9001; xxxxxxxxx:9001 no respondió
Causado por: NoHttpResponseException: xxxxxxxxx:9001 no respondió

Revisamos algunas otras páginas que mencionan el mismo error y, siguiendo el consejo allí, utilizamos la última versión del controlador (0.3.1-patch).

También intentamos esto con otro controlador (clickhouse-native-jdbc) y obtuvimos el mismo error.

Para agregar más contexto, intentamos utilizar el controlador de Python ‘clickhouse-driver’ con el siguiente fragmento de código:

from clickhouse_driver import Client

conn = Client('xxxxxxxxxx', password='pass', port=9001, user='usrname', verify= False, secure=True)
q1 ="select * from db_name.table limit 5"
result = conn.execute(q1)
print(result)

Esto funciona.

No estamos seguros de si esto se debe solo a que el SSL seguro está configurado en verdadero y la verificación está configurada en falso. Si es así, ¿cómo se deben agregar esos valores a los controladores utilizados anteriormente? Si esa no es la causa, ¿cuál podría ser la causa?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con la conexión SSL. Es posible que los controladores de Java y Scala no admitan conexiones SSL, mientras que el controlador de Python sí lo hace. Para agregar soporte SSL a los controladores de Java y Scala, puede intentar establecer los parámetros secure y verify en true al crear la conexión.

Comments are closed.