未封裝的 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.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

必要條件

如要將 Looker 連線至需要未封裝 JDBC 驅動程式的資料庫,您需要:

  • Looker 伺服器的指令列存取權。
  • JDBC 驅動程式 (JAR 檔案)。方言的特定說明文件可能會有關於下載這個檔案的說明;否則,系統會假設您有權存取所需的 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 為基礎,因此縮排和間距很重要。
  • 註冊 JDBC 驅動程式時,namedir_name 屬性必須是 Looker 用於方言的驅動程式符號。
  • 您可以使用 file_name 屬性,取代包含從 custom_jdbc_drivers 到 JDBC 驅動程式 JAR 檔案相對路徑的 dir_name。建議使用 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 目錄會有多個 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