未打包的 JDBC 驱动程序

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

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

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

方言 是否支持?
阿克蒂安雪崩
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
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+
带有原生驱动程序的 Cloudera Impala
DataVirtuality
Databricks
迪诺多 7
迪诺多 8 号星
德雷米奥
Dremio 11+
Exasol
火箭
Google BigQuery 旧版 SQL
Google BigQuery 标准 SQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL 数据库
Microsoft Azure Synapse 分析
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 9.5 之前的版本
PrestoDB
PrestoSQL
SAP HANA 2 及更高版本
SingleStore
SingleStore 7 及更高版本
Snowflake
Teradata
Trino
矢量
Vertica

前提条件

如需将 Looker 连接到需要未封装 JDBC 驱动程序的数据库,您需要:

  • 可通过命令行访问您的 Looker 服务器。
  • JAR 文件格式的 JDBC 驱动程序。方言的特定文档可能提供了关于在何处下载此文件的说明;否则,我们假设您有权访问所需的 JAR 文件。
  • 您方言的驾驶符号。驱动程序符号是一个字符串值,Looker 会在内部使用它将方言与驱动程序进行匹配。本页中的示例使用通用值 driver_symbol。如需了解 Looker 用于将 JDBC 驱动程序注册到方言的符号,请参阅本页面上的驱动程序符号列表
  • 要添加到 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,请参阅有关如何register驱动程序类的文档。
  • 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 目录将包含多个 dialect 子目录,这些子目录包含各自的驱动程序 JAR,而 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