Controladores JDBC sin empaquetar

Configura Looker para usar controladores de JDBC sin empaquetar

Para algunos de los dialectos compatibles de Looker, el controlador de JDBC no se puede empaquetar en el archivo JAR de Looker por motivos relacionados con las licencias. En estos casos, debes instalar el controlador de JDBC en tu servidor de Looker y, luego, configurar Looker para registrar el controlador sin empaquetar como se describe en esta página.

Todos los dialectos con el valor “No” en “¿Compatible?” requieren instalaciones de controladores JDBC sin empaquetar:

Dialecto ¿Es compatible?
Avalancha de Actian
No
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Apache Druid
Apache Druid 0.13 y versiones posteriores
Apache Druid 0.18 y versiones posteriores
Apache Hive 2.3 y versiones posteriores
Apache Hive 3.1.2 y versiones posteriores
Apache Spark 3 y versiones posteriores
ClickHouse
Cloudera Impala 3.1 y versiones posteriores
Cloudera Impala 3.1+ con controlador nativo
No
Cloudera Impala con controlador nativo
No
DataVirtuality
No
Databricks
Denodo 7
Denodo 8
Dremio
Dremio 11 y versiones posteriores
Exasol
Bola de fuego
SQL heredado de Google BigQuery
SQL estándar de Google BigQuery
PostgreSQL en Google Cloud
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Base de datos de Microsoft Azure SQL
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008 y versiones posteriores
Microsoft SQL Server 2012 y versiones posteriores
Microsoft SQL Server 2016
Microsoft SQL Server 2017 y versiones posteriores
MongoBI
No
MySQL
MySQL 8.0.12 y versiones posteriores
Oracle
Oracle ADWC
PostgreSQL 9.5 y versiones posteriores
PostgreSQL anterior a 9.5
PrestoDB
PrestoSQL
SAP HANA 2 y versiones posteriores
SingleStore
SingleStore 7 y versiones posteriores
Snowflake
Teradata
No
Trino
Vector
No
Vertica

Requisitos previos

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

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

Entradas del controlador 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

Cuando escribas la entrada del controlador para tu dialecto, haz lo siguiente:

  • El archivo custom_jdbc_config.yml se basa en YAML, lo que significa que las sangrías y los espacios son importantes.
  • Los atributos name y dir_name deben ser el símbolo de controlador que Looker espera para tu dialecto cuando registras los controladores de JDBC.
  • Es posible usar el atributo file_name en lugar de dir_name, que contiene la ruta de acceso relativa de custom_jdbc_drivers al archivo JAR del controlador de JDBC. Se recomienda dir_name porque promueve mantener varios controladores aislados en sus propios directorios y reduce la posibilidad de que entre en conflicto las clases de Java.
  • La propiedad module_path dependerá del controlador JDBC específico. Debería ser la ruta de acceso completamente calificada a la clase de controlador de Java. En este ejemplo, se usa un valor genérico. Para encontrar el module_path específico que usa el conductor, consulta su documentación sobre cómo register la clase de controlador.
  • override_jdbc_url_subprotocol es un argumento opcional que se usa para anular el subprotocolo de la cadena de JDBC que Looker envía a la base de datos. Una cadena de JDBC típica se verá de la siguiente manera:
jdbc:mysql://localhost:3306/database_name[?propertyName1][=propertyValue1]

Donde mysql es el subprotocolo de JDBC que se usa.

Si especificas override_jdbc_url_subprotocol: driver_subprotocol, esta cadena de JDBC se convertirá en la siguiente:

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

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

Instala controladores de JDBC sin empaquetar

  1. Cambia al directorio base de la aplicación de Looker. Para este documento, supondremos que es looker

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

    mkdir custom_jdbc_drivers
    
  3. En el directorio custom_jdbc_drivers, crea un subdirectorio cuyo nombre incluya el símbolo del controlador de tu dialecto. En este ejemplo, se usa el valor genérico driver_symbol. La ruta resultante al directorio se verá así: looker/custom_jdbc_drivers/driver_symbol

    cd custom_jdbc_drivers
    mkdir driver_symbol
    

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

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

    Transferir los archivos necesarios al servidor de Looker variará según la ubicación en la que obtengas los archivos del controlador y tu preferencia de transferencia de archivos. Algunos ejemplos de comandos para transferir archivos a este directorio son wget, scp, curl, etcétera.

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

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

    - 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 de Looker se inicie con la configuración del controlador de JDBC sin empaquetar. La ruta de acceso a este archivo debe ser looker/lookerstart.cfg. Agrega la opción --use-custom-jdbc-config. Si hay otras opciones, agrega esto al final de las opciones de inicio de Looker:

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

    Si LOOKERARGS está configurado en algún lugar distinto de lookerstart.cfg, como en una variable de entorno, puedes agregar esta marca de inicio allí. También puedes configurar LOOKERARGS="${LOOKERARGS} --use-custom-jdbc-config" para que los valores existentes se expandan a este archivo.

  8. Reinicia la aplicación de 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 de JDBC sin empaquetar

Si necesitas configurar más de un dialecto para usar controladores de JDBC sin empaquetar, el proceso descrito en la sección Instala controladores de JDBC sin empaquetar aún se aplica. El directorio custom_jdbc_drivers tendrá varios subdirectorios dialect con sus propios archivos JAR del controlador, 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