将 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 | 是 |
| 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,这意味着缩进和空格非常重要。 name和dir_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 驱动程序
切换到 Looker 应用基本目录。此示例使用
looker作为基本目录。cd looker创建名为
custom_jdbc_drivers的目录。这是所有未打包的 JDBC 驱动程序安装的顶级目录。此目录的路径应为looker/custom_jdbc_driversmkdir custom_jdbc_drivers在
custom_jdbc_drivers目录中,创建一个以方言的驱动程序符号命名的子目录。此示例使用通用值driver_symbol。生成的目录路径将类似于looker/custom_jdbc_drivers/driver_symbolcd custom_jdbc_drivers mkdir driver_symbol将相应方言的 JDBC 驱动程序文件放入此目录。具体方法取决于方言驱动程序在服务器上的位置以及上传到服务器的方式,但请务必确保相关 JAR 文件位于
driver_symbol目录中:looker/custom_jdbc_drivers/driver_symbol/例如:
looker/custom_jdbc_drivers/driver_symbol/DialectDriver.jar将必要文件移至 Looker 服务器的方式因您获取驱动程序文件的位置以及您对文件传输的偏好而异。用于将文件传输到此目录的命令示例包括
wget、scp和curl。将目录更改为 Looker 应用目录,然后创建一个名为
custom_jdbc_config.yml的配置文件。此文件的路径应为looker/custom_jdbc_config.yml。此文件将包含 Looker 定位和注册自定义 JDBC 驱动程序所需的信息。cd looker vim custom_jdbc_config.yml在
custom_jdbc_config.yml配置文件中为您的方言添加一个新条目。如需了解驱动程序条目,请参阅本页面上的 YAML 配置文件中的驱动程序条目部分。- name: driver_symbol dir_name: driver_symbol module_path: com.dialect.jdbc.DialectDriver创建或更新文件
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",以便将现有值扩展到此文件中。重启 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