未打包的 JDBC 驱动程序

将 Looker 配置为使用未打包的 JDBC 驱动程序

对于 Looker 支持的某些方言,由于许可方面的原因,JDBC 驱动程序无法打包到 Looker JAR 文件中。在这些情况下,您必须在 Looker 服务器上安装 JDBC 驱动程序,然后配置 Looker 以注册未打包的驱动程序,如本页所述。

“支持?”列中值为“否”的所有方言都需要安装未打包的 JDBC 驱动程序:

方言 是否支持?
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
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
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

前提条件

如需将 Looker 连接到需要未打包的 JDBC 驱动程序的数据库,您需要满足以下条件:

  • 对 Looker 服务器的命令行访问权限。
  • 以 JAR 文件形式提供的 JDBC 驱动程序。方言的特定文档可能包含有关从何处下载此文件的说明;否则,系统会假定您有权访问所需的 JAR 文件。
  • 您所用方言的驱动程序符号。驱动程序符号是 Looker 在内部用于将方言与驱动程序相匹配的字符串值。本页面上的示例使用通用值 driver_symbol。如需了解 Looker 用于将 JDBC 驱动程序注册到方言的符号,请参阅每种方言的 Looker 文档。
  • 要添加到 custom_jdbc_config.yml 配置文件中的方言的 YAML 驱动程序条目。如需了解详情,请参阅本页面上的 YAML 配置文件中的驱动程序条目部分。

YAML 配置文件中的驱动程序条目

以下是 custom_jdbc_config.yml 文件中的一个示例驱动程序条目

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

为方言编写驱动程序条目时:

  • 文件 custom_jdbc_config.yml 基于 YAML,这意味着缩进和空格非常重要。
  • namedir_name 属性必须是 Looker 在注册 JDBC 驱动程序时用于您的方言的驱动程序符号。
  • 可以使用属性 file_name(而不是 dir_name)来包含从 custom_jdbc_drivers 到 JDBC 驱动程序 JAR 文件的相对路径。建议使用 dir_name,因为它可以确保多个驱动程序彼此隔离到各自的目录中,并降低 Java 类发生冲突的几率。
  • module_path 属性将取决于具体的 JDBC 驱动程序。它应该是 Java 驱动程序类的完全限定路径。此示例使用了一个通用值,但如需查找驱动程序使用的特定 module_path,请参阅其有关如何注册驱动程序类的文档。
  • override_jdbc_url_subprotocol 是一个可选实参,用于替换 Looker 在发送给数据库的 JDBC 字符串中使用的子协议。典型的 JDBC 字符串如下所示:
jdbc:mysql://localhost:3306/database_name[?propertyName1][=propertyValue1]

其中,mysql 是所使用的 JDBC 子协议。

如果您指定 override_jdbc_url_subprotocol: driver_subprotocol,则此 JDBC 字符串将变为:

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

如果您需要使用未打包的 JDBC 驱动程序,且该驱动程序需要使用 Looker 默认网址子协议以外的网址子协议,则必须选择此选项。在大多数情况下,除非方言的文档明确说明需要,否则无需执行此操作。MongoBI 是需要此选项的方言的一个示例。

安装未打包的 JDBC 驱动程序

  1. 切换到 Looker 应用基本目录。此示例使用 looker 作为基本目录。

    cd looker
    
  2. 创建名为 custom_jdbc_drivers 的目录。这是所有未打包的 JDBC 驱动程序安装的顶级目录。此目录的路径应为 looker/custom_jdbc_drivers

    mkdir custom_jdbc_drivers
    
  3. custom_jdbc_drivers 目录中,创建一个以方言的驱动程序符号命名的子目录。此示例使用通用值 driver_symbol。生成的目录路径将类似于 looker/custom_jdbc_drivers/driver_symbol

    cd custom_jdbc_drivers
    mkdir driver_symbol
    

  4. 将相应方言的 JDBC 驱动程序文件放入此目录。具体方法取决于方言驱动程序在服务器上的位置以及上传到服务器的方式,但请务必确保相关 JAR 文件位于 driver_symbol 目录中:looker/custom_jdbc_drivers/driver_symbol/

    例如:looker/custom_jdbc_drivers/driver_symbol/DialectDriver.jar

    将必要文件移至 Looker 服务器的方式因您获取驱动程序文件的位置以及您对文件传输的偏好而异。用于将文件传输到此目录的命令示例包括 wgetscpcurl

  5. 将目录更改为 Looker 应用目录,然后创建一个名为 custom_jdbc_config.yml 的配置文件。此文件的路径应为 looker/custom_jdbc_config.yml。此文件将包含 Looker 定位和注册自定义 JDBC 驱动程序所需的信息。

    cd looker
    vim custom_jdbc_config.yml
    
  6. custom_jdbc_config.yml 配置文件中为您的方言添加一个新条目。如需了解驱动程序条目,请参阅本页面上的 YAML 配置文件中的驱动程序条目部分。

    - name: driver_symbol
      dir_name: driver_symbol
      module_path: com.dialect.jdbc.DialectDriver
    
  7. 创建或更新文件 lookerstart.cfg,以便 Looker 应用在启动时使用未打包的 JDBC 驱动程序配置。此文件的路径应为 looker/lookerstart.cfg。添加选项 --use-custom-jdbc-config。如果还有其他选项,请将此选项附加到 Looker 启动选项的末尾:

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

    如果您在 lookerstart.cfg 以外的其他位置(例如在环境变量中)设置了 LOOKERARGS,则可以在该位置添加此启动标志。或者,您也可以设置 LOOKERARGS="${LOOKERARGS} --use-custom-jdbc-config",以便将现有值扩展到此文件中。

  8. 重启 Looker 应用。在此命令中,请使用 Looker 启动脚本的名称,例如 ./looker./looker.sh

    ./looker restart
    

    none ./looker stop ./looker start

多个未封装的 JDBC 驱动程序

如果您需要配置多个方言以使用未打包的 JDBC 驱动程序,则安装未打包的 JDBC 驱动程序部分中所述的流程仍然适用。custom_jdbc_drivers 目录将包含多个具有各自驱动程序 JAR 的 dialect 子目录,并且 custom_jdbc_config.yml 文件将包含多个条目:

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