未封裝的 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
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 伺服器。
  • JDBC 驅動程式為 JAR 檔案。方言的特定文件可能會說明這個檔案的下載位置;如果沒有說明,則假設您已取得所需的 JAR 檔案。
  • 所用方言的驅動程式符號。驅動程式符號是 Looker 在內部用來比對方言與驅動程式的字串值。本頁範例使用的是通用值 driver_symbol。請參閱各方言的 Looker 說明文件,瞭解 Looker 用來將 JDBC 驅動程式註冊至方言的符號。
  • 要新增至 custom_jdbc_config.yml 設定檔的方言 YAML driver 項目。詳情請參閱本頁的「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"
    

    如果您將 LOOKERARGS 設在 lookerstart.cfg 以外的位置 (例如環境變數),可以在此新增這個啟動標記。或者,您也可以設定 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