Configurar o Looker para usar drivers JDBC não empacotados
Para alguns dialetos compatíveis com o Looker, o driver JDBC não pode ser empacotado no arquivo JAR do Looker por motivos relacionados ao licenciamento. Nesses casos, é necessário instalar o driver JDBC no servidor do Looker e configurar o Looker para registrar o driver não empacotado, conforme descrito nesta página.
Todos os dialetos com um valor "Não" em "Compatível?" exigem instalações de driver JDBC não empacotado:
| 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.x - 0.17.x | |
| 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 AlloyDB for PostgreSQL | |
| 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ê precisa do seguinte:
- Acesso à linha de comando do 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 driver 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 documentação do Looker para cada dialeto para conferir os símbolos que o Looker usa para registrar drivers JDBC em dialetos. - A entrada do driver YAML para 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
nameedir_nameprecisam ser o símbolo do driver que o Looker usa para seu dialeto ao registrar drivers JDBC. - É possível usar o atributo
file_nameem vez dedir_nameque contém o caminho relativo decustom_jdbc_driverspara o arquivo JAR do driver JDBC.dir_nameé recomendado porque promove a manutenção de vários drivers isolados em seus próprios diretórios e reduz a chance de classes Java entrarem em conflito. - A propriedade
module_pathdepende do driver JDBC específico. Ele precisa ser o caminho totalmente qualificado para a classe do driver Java. Este exemplo usa um valor genérico, mas para encontrar omodule_pathespecífico que o driver usa, consulte a documentação sobre como registrar a classe do driver. 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, essa string JDBC se tornará:
jdbc:driver_subprotocol://localhost:3306/database_name[?propertyName1][=propertyValue1]
Essa opção é necessária se você precisar usar um driver JDBC não empacotado que exige um subprotocolo de URL diferente do subprotocolo de URL padrão do Looker. Na maioria das vezes, isso não é necessário, a menos que a documentação do dialeto diga explicitamente que é. MongoBI é um exemplo de dialeto que exige essa opção.
Instalar drivers JDBC não empacotados
Mude para o diretório base do aplicativo Looker. Este exemplo usa
lookercomo o diretório base.cd lookerCrie um diretório chamado
custom_jdbc_drivers. Esse é o diretório de nível superior para todas as instalações de driver JDBC não empacotado. O caminho para esse diretório precisa serlooker/custom_jdbc_driversmkdir custom_jdbc_driversNo diretório
custom_jdbc_drivers, crie um subdiretório nomeado com o símbolo do driver do seu dialeto. Este exemplo usa o valor genéricodriver_symbol. O caminho resultante para o diretório serálooker/custom_jdbc_drivers/driver_symbolcd custom_jdbc_drivers mkdir driver_symbolColoque os arquivos do driver JDBC do seu dialeto nesse diretório. O método para isso depende de onde o driver do dialeto pode ser encontrado e enviado para o servidor, mas verifique se os arquivos JAR relevantes estão dentro do
driver_symboldiretório:looker/custom_jdbc_drivers/driver_symbol/Por exemplo:
looker/custom_jdbc_drivers/driver_symbol/DialectDriver.jarA maneira como você move os arquivos necessários para o servidor do Looker varia de acordo com o local em que você recebe os arquivos do driver e sua preferência para transferência de arquivos. Exemplos de comandos para transferir arquivos para esse diretório incluem
wget,scpecurl.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 serlooker/custom_jdbc_config.yml. Esse arquivo vai conter as informações de que o Looker precisa para localizar e registrar o driver JDBC personalizado.cd looker vim custom_jdbc_config.ymlAdicione 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 informações sobre entradas de driver.- name: driver_symbol dir_name: driver_symbol module_path: com.dialect.jdbc.DialectDriverCrie ou atualize o arquivo
lookerstart.cfgpara que o aplicativo Looker seja iniciado com a configuração do driver JDBC não empacotado. O caminho para esse arquivo precisa serlooker/lookerstart.cfg. Adicione a opção--use-custom-jdbc-config. Se houver outras opções, anexe-as ao final das opções de inicialização do Looker:LOOKERARGS="--use-custom-jdbc-config"Se você tiver
LOOKERARGSdefinido em outro lugar que não sejalookerstart.cfg, como em uma variável de ambiente, adicione essa flag de inicialização. Como alternativa, definaLOOKERARGS="${LOOKERARGS} --use-custom-jdbc-config"para que os valores atuais sejam expandidos nesse arquivo.Reinicie o aplicativo Looker. Nesse comando, use o nome do script de inicialização do Looker, como
./lookerou./looker.sh./looker restartou
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á aplicado. O diretório custom_jdbc_drivers terá vários subdiretórios dialect com seus 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