Drivers JDBC desempacotados

Configurar o Looker para usar drivers JDBC não empacotados

Em alguns dos dialetos compatíveis do Looker, o driver JDBC não pode ser empacotado no arquivo JAR do Looker por motivos relacionados ao licenciamento. Nesses casos, instale o driver JDBC no servidor do Looker e configure o Looker para registrar o driver não empacotado, conforme descrito nesta página.

Todos os dialetos com o valor "Não" em "Compatível?" exigem instalações de driver JDBC não empacotadas:

Dialeto Compatível?
Actian Avalanche
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
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
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
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
Trino
Vector
Vertica

Pré-requisitos

Para conectar o Looker a um banco de dados que exige um driver JDBC não empacotado, você vai precisar do seguinte:

  • Acesso à linha de comando do seu servidor do Looker.
  • O driver JDBC como um arquivo JAR. A documentação específica do dialeto pode ter instruções sobre onde baixar esse arquivo. Caso contrário, presume-se que você tenha acesso ao arquivo JAR necessário.
  • O símbolo do driver para seu dialeto. Um símbolo de driver é um valor de string que o Looker usa internamente para corresponder o dialeto ao driver. Os exemplos nesta página usam o valor genérico driver_symbol. Consulte a documentação do Looker para cada dialeto e confira os símbolos que o Looker usa para registrar drivers JDBC em dialetos.
  • A entrada de driver YAML do seu dialeto a ser adicionada ao arquivo de configuração custom_jdbc_config.yml. Consulte a seção Entradas de driver no arquivo de configuração YAML nesta página para mais informações.

Entradas de driver no arquivo de configuração YAML

Confira um exemplo de entrada de driver no arquivo custom_jdbc_config.yml:

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

Ao escrever a entrada do driver para seu dialeto:

  • O arquivo custom_jdbc_config.yml é baseado em YAML, o que significa que o recuo e o espaçamento são importantes.
  • Os atributos name e dir_name precisam ser o símbolo do driver que o Looker usa para seu dialeto ao registrar drivers JDBC.
  • É possível usar o atributo file_name em vez de dir_name, que contém o caminho relativo de custom_jdbc_drivers para o arquivo JAR do driver JDBC. O dir_name é recomendado porque promove o isolamento de vários drivers em diretórios próprios e reduz a chance de conflito entre classes Java.
  • A propriedade module_path depende do driver JDBC específico. Ele precisa ser o caminho totalmente qualificado para a classe de driver do Java. Este exemplo usa um valor genérico, mas para encontrar o module_path específico usado pelo driver, consulte a documentação sobre como registrar a classe do driver.
  • O override_jdbc_url_subprotocol é um argumento opcional usado para substituir o subprotocolo usado na string JDBC que o Looker envia ao banco de dados. Uma string JDBC típica é assim:
jdbc:mysql://localhost:3306/database_name[?propertyName1][=propertyValue1]

Em que mysql é o subprotocolo JDBC usado.

Se você especificar override_jdbc_url_subprotocol: driver_subprotocol, a string JDBC será:

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

Essa opção é obrigatória se você precisar usar um driver JDBC não empacotado que exija um subprotocolo de URL diferente do padrão do Looker. Na maioria dos casos, isso não é necessário, a menos que a documentação do dialeto diga explicitamente que é. O MongoBI é um exemplo de dialeto que exige essa opção.

Como instalar drivers JDBC não empacotados

  1. Mude para o diretório base do aplicativo Looker. Neste exemplo, usamos looker como diretório base.

    cd looker
    
  2. Crie um diretório chamado custom_jdbc_drivers. Este é o diretório de nível superior para todas as instalações de drivers JDBC não empacotados. O caminho para esse diretório precisa ser looker/custom_jdbc_drivers

    mkdir custom_jdbc_drivers
    
  3. No diretório custom_jdbc_drivers, crie um subdiretório com o símbolo do driver do seu dialeto. Este exemplo usa o valor genérico driver_symbol. O caminho resultante para o diretório será semelhante a looker/custom_jdbc_drivers/driver_symbol

    cd custom_jdbc_drivers
    mkdir driver_symbol
    

  4. Coloque os arquivos do driver JDBC para seu dialeto nesse diretório. O método para isso depende de onde o driver do seu dialeto pode ser encontrado e enviado para o servidor. No entanto, verifique se os arquivos JAR relevantes estão no diretório driver_symbol: looker/custom_jdbc_drivers/driver_symbol/

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

    A forma de mover os arquivos necessários para o servidor do Looker varia de acordo com a origem dos arquivos de driver e sua preferência de transferência de arquivos. Exemplos de comandos para transferir arquivos para esse diretório incluem wget, scp e curl.

  5. Mude o diretório para o diretório do aplicativo Looker e crie um arquivo de configuração chamado custom_jdbc_config.yml. O caminho para esse arquivo precisa ser looker/custom_jdbc_config.yml. Esse arquivo vai conter as informações necessárias para o Looker localizar e registrar o driver JDBC personalizado.

    cd looker
    vim custom_jdbc_config.yml
    
  6. Adicione uma nova entrada para seu dialeto no arquivo de configuração custom_jdbc_config.yml. Consulte a seção Entradas de driver no arquivo de configuração YAML nesta página para informações sobre entradas de driver.

    - name: driver_symbol
      dir_name: driver_symbol
      module_path: com.dialect.jdbc.DialectDriver
    
  7. Crie ou atualize o arquivo lookerstart.cfg para que o aplicativo Looker seja iniciado com a configuração do driver JDBC descompactado. O caminho para esse arquivo precisa ser looker/lookerstart.cfg. Adicione a opção --use-custom-jdbc-config. Se houver outras opções, adicione isso ao final das opções de inicialização do Looker:

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

    Se você tiver LOOKERARGS definido em outro lugar que não seja lookerstart.cfg, como em uma variável de ambiente, adicione essa flag de inicialização lá. Como alternativa, defina LOOKERARGS="${LOOKERARGS} --use-custom-jdbc-config" para que os valores atuais sejam expandidos nesse arquivo.

  8. Reinicie o aplicativo Looker. Nesse comando, use o nome do seu script de inicialização do Looker, como ./looker ou ./looker.sh.

    ./looker restart
    

    ou none ./looker stop ./looker start

Vários drivers JDBC não empacotados

Se você precisar configurar mais de um dialeto para usar drivers JDBC não empacotados, o processo descrito na seção Instalar drivers JDBC não empacotados ainda será válido. O diretório custom_jdbc_drivers terá vários subdiretórios dialect com os próprios JARs de driver, e o arquivo custom_jdbc_config.yml terá várias 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