Controladores JDBC sin empaquetar

Configurar Looker para que use controladores JDBC sin empaquetar

En algunos de los dialectos compatibles con Looker, el controlador JDBC no se puede empaquetar en el archivo JAR de Looker por motivos relacionados con la licencia. En estos casos, debes instalar el controlador JDBC en tu servidor de Looker y, a continuación, configurar Looker para registrar el controlador no empaquetado, tal como se describe en esta página.

En todas las variantes con el valor "No" en la columna "¿Admitida?", es necesario instalar controladores JDBC sin empaquetar:

Dialecto ¿Es compatible?
Actian Avalanche
No
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13+
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
No
Cloudera Impala with Native Driver
No
DataVirtuality
No
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Firebolt
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
No
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
No
Trino
Vector
No
Vertica

Requisitos previos

Para conectar Looker a una base de datos que requiera un controlador JDBC sin empaquetar, necesitará lo siguiente:

  • Acceso a la línea de comandos de tu servidor de Looker.
  • El controlador JDBC como archivo JAR. En la documentación específica del dialecto puede haber instrucciones sobre dónde descargar este archivo. De lo contrario, se presupone que tienes acceso al archivo JAR necesario.
  • El símbolo del controlador de tu dialecto. Un símbolo de controlador es un valor de cadena que Looker usa internamente para asociar el dialecto al controlador. En los ejemplos de esta página se usa el valor genérico driver_symbol. Consulta la documentación de Looker de cada dialecto para ver los símbolos que usa Looker para registrar controladores JDBC en dialectos.
  • La entrada del controlador YAML de tu dialecto que se va a añadir al archivo de configuración custom_jdbc_config.yml. Consulta la sección Entradas de controladores en el archivo de configuración YAML de esta página para obtener más información.

Entradas de controladores en el archivo de configuración YAML

A continuación, se muestra un ejemplo de entrada de controlador en el archivo custom_jdbc_config.yml:

  - name: driver_symbol
    dir_name: driver_symbol
    module_path: com.dialect.jdbc.DialectDriver
    override_jdbc_url_subprotocol: driver_subprotocol  # optional

Al escribir la entrada del controlador de tu dialecto:

  • El archivo custom_jdbc_config.yml se basa en YAML, lo que significa que la sangría y el espaciado son importantes.
  • Los atributos name y dir_name deben ser el símbolo del controlador que Looker usa para tu dialecto al registrar controladores JDBC.
  • Puede usar el atributo file_name en lugar de dir_name, que contiene la ruta relativa de custom_jdbc_drivers al archivo JAR del controlador JDBC. dir_name es recomendable porque permite que varios controladores estén aislados en sus propios directorios y reduce la probabilidad de que las clases de Java entren en conflicto.
  • La propiedad module_path dependerá del controlador JDBC específico. Debe ser la ruta completa a la clase del controlador de Java. En este ejemplo se usa un valor genérico, pero para encontrar el module_path específico que usa el controlador, consulta su documentación sobre cómo registrar la clase del controlador.
  • override_jdbc_url_subprotocol es un argumento opcional que se usa para anular el subprotocolo que se utiliza en la cadena JDBC que Looker envía a la base de datos. Una cadena JDBC típica tendrá este aspecto:
jdbc:mysql://localhost:3306/database_name[?propertyName1][=propertyValue1]

Donde mysql es el subprotocolo JDBC que se está usando.

Si especifica override_jdbc_url_subprotocol: driver_subprotocol, esta cadena JDBC será:

jdbc:driver_subprotocol://localhost:3306/database_name[?propertyName1][=propertyValue1]

Esta opción es obligatoria si necesitas usar un controlador JDBC sin empaquetar que requiera un subprotocolo de URL distinto del subprotocolo de URL predeterminado de Looker. Por lo general, no es necesario, a menos que la documentación del dialecto indique explícitamente que sí lo es. MongoBI es un ejemplo de dialecto que requiere esta opción.

Instalar controladores JDBC sin empaquetar

  1. Cambia al directorio base de la aplicación Looker. En este ejemplo, se usa looker como directorio base.

    cd looker
    
  2. Crea un directorio llamado custom_jdbc_drivers. Este es el directorio de nivel superior de todas las instalaciones de controladores JDBC sin empaquetar. La ruta a este directorio debe ser looker/custom_jdbc_drivers.

    mkdir custom_jdbc_drivers
    
  3. En el directorio custom_jdbc_drivers, crea un subdirectorio con el símbolo del controlador de tu dialecto. En este ejemplo se usa el valor genérico driver_symbol. La ruta resultante del directorio será similar a looker/custom_jdbc_drivers/driver_symbol.

    cd custom_jdbc_drivers
    mkdir driver_symbol
    

  4. Coloca los archivos del controlador JDBC de tu dialecto en este directorio. El método para hacerlo depende de dónde se encuentre el controlador de tu dialecto y de dónde se pueda subir al servidor, pero asegúrate de que los archivos JAR correspondientes estén en el directorio driver_symbol: looker/custom_jdbc_drivers/driver_symbol/

    Por ejemplo: looker/custom_jdbc_drivers/driver_symbol/DialectDriver.jar

    La forma de mover los archivos necesarios al servidor de Looker variará en función de dónde obtengas los archivos del controlador y de tus preferencias de transferencia de archivos. Algunos ejemplos de comandos para transferir archivos a este directorio son wget, scp y curl.

  5. Cambia el directorio por el directorio de la aplicación Looker y crea un archivo de configuración llamado custom_jdbc_config.yml. La ruta de este archivo debe ser looker/custom_jdbc_config.yml. Este archivo contendrá la información que Looker necesita para localizar y registrar el controlador JDBC personalizado.

    cd looker
    vim custom_jdbc_config.yml
    
  6. Añade una nueva entrada para tu dialecto en el archivo de configuración custom_jdbc_config.yml. Consulta la sección Entradas de controladores en el archivo de configuración YAML de esta página para obtener información sobre las entradas de controladores.

    - name: driver_symbol
      dir_name: driver_symbol
      module_path: com.dialect.jdbc.DialectDriver
    
  7. Crea o actualiza el archivo lookerstart.cfg para que la aplicación Looker se inicie con la configuración del controlador JDBC sin empaquetar. La ruta de este archivo debe ser looker/lookerstart.cfg. Añade la opción --use-custom-jdbc-config. Si hay otras opciones, añádalas al final de las opciones de inicio de Looker:

    LOOKERARGS="--use-custom-jdbc-config"
    

    Si has definido LOOKERARGS en otro lugar que no sea lookerstart.cfg, como en una variable de entorno, puedes añadir esta marca de inicio ahí. También puede definir LOOKERARGS="${LOOKERARGS} --use-custom-jdbc-config" para que los valores que ya tenga se incluyan en este archivo.

  8. Reinicia la aplicación Looker. En este comando, usa el nombre de tu secuencia de comandos de inicio de Looker, como ./looker o ./looker.sh.

    ./looker restart
    

    o none ./looker stop ./looker start

Varios controladores JDBC sin empaquetar

Si necesitas configurar más de un dialecto para usar controladores JDBC sin empaquetar, el proceso descrito en la sección Instalar controladores JDBC sin empaquetar sigue siendo válido. El directorio custom_jdbc_drivers tendrá varios subdirectorios dialect con sus propios archivos JAR de controladores, y el archivo custom_jdbc_config.yml tendrá varias entradas:

ls looker/custom_jdbc_drivers

driver_symbol_1 driver_symbol_2
ls looker/custom_jdbc_drivers/driver_symbol_1

Dialect1Driver.jar
- name: driver_symbol_1
  dir_name: driver_symbol_1
  module_path: com.dialect.jdbc.Dialect1Driver

- name: driver_symbol_2
  dir_name: driver_symbol_2
  module_path: com.dialect.jdbc.Dialect2Driver