Drivers JDBC não empacotados

Como configurar o Looker para usar drivers JDBC não empacotados

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

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

Dialeto Compatível?
Avalanche Actian
No
Amazon Athena
Sim
MySQL do Amazon Aurora
Sim
Amazon Redshift
Sim
Apache Druid
Sim
Apache Druid 0.13 ou superior
Sim
Apache Druid 0.18 ou superior
Sim
Apache Hive 2.3 ou superior
Sim
Apache Hive 3.1.2 ou posterior
Sim
Apache Spark 3 ou mais recente
Sim
ClickHouse
Sim
Cloudera Impala 3.1 ou superior
Sim
Cloudera Impala 3.1+ com driver nativo
No
Cloudera Impala com driver nativo
No
DataVirtuality
No
Databricks
Sim
Denodo 7
Sim
Denodo 8
Sim
Drêmio
Sim
Dremio 11 ou superior
Sim
Exasol
Sim
Bola de fogo
Sim
SQL legado do Google BigQuery
Sim
SQL padrão do Google BigQuery
Sim
PostgreSQL do Google Cloud
Sim
Google Cloud SQL
Sim
Google Spanner (em inglês)
Sim
Greenplum
Sim
HyperSQL
Sim
IBM Netezza
Sim
MariaDB
Sim
PostgreSQL do Microsoft Azure
Sim
Banco de dados SQL do Microsoft Azure
Sim
Análises do Microsoft Azure Synapse
Sim
Microsoft SQL Server 2008 ou superior
Sim
Microsoft SQL Server 2012 ou posterior
Sim
Microsoft SQL Server 2016
Sim
Microsoft SQL Server 2017 ou posterior
Sim
MongoBI
No
MySQL
Sim
MySQL 8.0.12 ou mais recente
Sim
Oracle
Sim
ADWC da Oracle
Sim
PostgreSQL 9.5 ou mais recente
Sim
PostgreSQL anterior à 9.5
Sim
PrestoDB
Sim
PrestoSQL
Sim
SAP HANA 2 ou posterior
Sim
SingleStore
Sim
SingleStore 7 ou superior
Sim
Snowflake
Sim
Teradata
No
Trino
Sim
Vetor
No
Vertica
Sim

Pré-requisitos

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

  • Acesso de linha de comando ao seu servidor do Looker.
  • O driver JDBC como um arquivo JAR. A documentação específica do dialeto pode ter instruções sobre onde fazer o download desse arquivo; caso contrário, presumimos que você tenha acesso ao arquivo JAR necessário.
  • O símbolo do motorista do 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 lista de símbolos de driver nesta página para ver os símbolos que o Looker usa para registrar drivers JDBC em dialetos.
  • A entrada do driver do YAML para o dialeto que será adicionado 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 do 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 espera para o dialeto ao registrar drivers JDBC.
  • É possível usar o atributo file_name em vez de dir_name contendo o caminho relativo de custom_jdbc_drivers para o arquivo JAR do driver do JDBC. O dir_name é recomendado porque promove a isolamento de vários drivers nos próprios diretórios e reduz a chance de colisão de classes do Java.
  • A propriedade module_path dependerá do driver JDBC específico. Ele deve ser o caminho totalmente qualificado para a classe do driver do Java. Esse exemplo usa um valor genérico. No entanto, para encontrar o module_path específico que o driver usa, consulte a documentação sobre como register 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 terá esta aparência:
jdbc:mysql://localhost:3306/database_name[?propertyName1][=propertyValue1]

Em que mysql é o subprotocolo do JDBC que está sendo usado.

Se você especificar override_jdbc_url_subprotocol: driver_subprotocol, essa string JDBC se tornará:

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

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

Como instalar drivers JDBC não empacotados

  1. Mude para o diretório base do aplicativo Looker. Para este documento, vamos supor que é looker

    cd looker
    
  2. Crie um diretório chamado custom_jdbc_drivers. Esse é 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 nomeado com o símbolo de driver do 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 do 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, mas verifique se os arquivos JAR relevantes estão dentro do diretório driver_symbol: looker/custom_jdbc_drivers/driver_symbol/

    Exemplo: looker/custom_jdbc_drivers/driver_symbol/DialectDriver.jar

    A migração dos arquivos necessários para o servidor do Looker varia de acordo com o local em que você acessa os arquivos do driver e sua preferência de transferência de arquivos. Exemplos de comandos para transferir arquivos para esse diretório são wget, scp, curl etc.

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

    cd looker
    vim custom_jdbc_config.yml
    
  6. Adicione uma nova entrada para seu dialeto 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 sobre as entradas do 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, anexe-a ao final das opções de inicialização do Looker:

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

    Se você tiver LOOKERARGS definido em algum lugar diferente de lookerstart.cfg, como em uma variável de ambiente, adicione essa sinalização de inicialização. Como alternativa, você pode definir 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 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 Como instalar drivers JDBC não empacotados ainda se aplica. 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