PrestoDB 和 Trino

本頁說明如何將 Looker 連線至 PrestoDBTrino

加密網路流量

最佳做法是加密 Looker 應用程式與資料庫之間的網路流量。請考慮使用「啟用安全資料庫存取權」說明文件頁面所述的其中一個選項。

建立 Looker 資料庫連線

在 Looker 的「管理」部分中,選取「連線」,然後按一下「新增連線」

填寫連線詳細資料。在這些設定中,有絕大部分都是多數資料庫方言的常用設定。詳情請參閱「將 Looker 連線至資料庫」說明文件頁面。以下說明部分設定:

  • 方言:選取「PrestoDB」或「Trino」

    PrestoSQL 已重新命名為 Trino。如果使用的 Trino 版本早於 352,請從 Looker 方言選單中選取「PrestoSQL」PrestoSQL

  • 主機:資料庫主機名稱。

  • 「Port」(通訊埠):資料庫通訊埠。預設通訊埠為 8080。

  • 資料庫:以 Presto 術語來說,就是「目錄」或「連接器」。

  • 使用者名稱:將執行查詢的使用者名稱。

    只有在啟用 SSL 時,這項資訊才會傳送至資料庫伺服器。

  • 「Password」(密碼):將執行查詢的使用者密碼。

    只有在啟用 SSL 時,這項資訊才會傳送至資料庫伺服器。

  • 結構定義:未指定結構定義時要使用的預設結構定義。

  • 驗證:選取「資料庫帳戶」或「OAuth」

    • 使用「資料庫帳戶」指定要連線至 Looker 的資料庫使用者帳戶「使用者名稱」和「密碼」
    • 如要為連線設定 OAuth,請使用 OAuth
  • 啟用 PDT:使用這個切換按鈕啟用永久衍生資料表 (PDT)。系統會顯示其他 PDT 欄位,以及連線的「PDT Overrides」(PDT 覆寫) 區段。

  • 暫存資料庫:用於寫入 PDT 的結構定義。(3.50 版為 Presto 新增 PDT 支援。如要進一步瞭解如何設定 Presto 支援 PDT,請參閱本頁的「設定 PrestoDB 或 Trino 支援 PDT」一節。

  • 其他 JDBC 參數PrestoDB JDBC 驅動程式Trino JDBC 驅動程式Starburst JDBC 驅動程式的任何其他參數。

  • SSL:勾選即可啟用 SSL 連線。

  • 驗證 SSL:忽略此欄位。除非使用 PrestoDB JDBC 參數Trino JDBC 驅動程式Starburst JDBC 驅動程式另行指定,否則所有 SSL 連線都會使用預設的 Java Truststore。在「Additional JDBC parameters」(其他 JDBC 參數) 欄位中輸入這些參數。

如要確認連線是否成功,請按一下「測試」。如需疑難排解資訊,請參閱「測試資料庫連線」說明文件頁面。

如要儲存這些設定,請按一下「連線」

如要進一步瞭解連線設定,請參閱「將 Looker 連線至資料庫」說明文件頁面。

為 PDT 設定 PrestoDB 或 Trino

使用 OAuth 的連線不支援 PDT。

PDT 支援取決於您搭配 PrestoDB 或 Trino 使用的連接器。本節說明暫存資料庫的必要設定。本範例假設您使用的連接器為 hive

Hive 目錄屬性檔案應包含幾個設定屬性,本節將說明這些屬性。

由於 Presto 會快取 Hive 中繼存放區結果,且 Looker 必須能夠立即查看資料表,因此需要執行下列操作:

hive.metastore-cache-ttl = 0s

這兩項屬性是必要屬性,因為 Looker 必須能夠捨棄及重新命名 PDT:

hive.allow-rename-table=true
hive.allow-drop-table=true

供您參考,在內部 Presto 測試伺服器中,我們使用下列 hive.properties 檔案,適用於所有 Hive 結構定義:

hive.s3.connect-timeout=1m
hive.s3.max-backoff-time=10m
hive.s3.max-error-retries=50
hive.metastore-cache-ttl = 0s
hive.metastore-refresh-interval = 5s
hive.s3.max-connections=500
hive.s3.max-client-retries=50
connector.name=hive-hadoop2
hive.s3.socket-timeout=2m
hive.s3.staging-directory=/mnt/tmp/
hive.s3.use-instance-credentials=true
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
hive.parquet.use-column-names=true
hive.allow-drop-table=true
hive.metastore.uri=thrift://<metastore-server>:9083
hive.storage-format=ORC
hive.allow-rename-table=true

為 Trino 連線設定 OAuth

Looker 支援 Trino 連線的 OAuth,也就是說,每位 Looker 使用者都會透過自己的 OAuth 使用者帳戶,向資料庫進行驗證,並授權 Looker 在資料庫中執行查詢。

資料庫管理員可透過 OAuth 執行下列工作:

  • 稽核哪些 Looker 使用者對資料庫執行查詢
  • 使用資料庫層級權限,強制執行角色型存取權控管
  • 針對存取資料庫的所有程序和動作使用 OAuth 權杖,而不是在多個位置嵌入資料庫 ID 和密碼
  • 直接透過資料庫撤銷特定使用者的授權

如果 Trino 連線使用 OAuth,使用者必須在 OAuth 權杖到期時定期重新登入。

請注意資料庫層級 OAuth 連線的下列事項:

  • 如果使用者讓 OAuth 權杖過期,他們擁有的任何排程或快訊都會受到影響。為防範這種情況,Looker 會在目前有效的 OAuth 權杖到期前,傳送通知電子郵件給每個排程和快訊的擁有者。Looker 會在權杖到期前 14 天、7 天和 1 天,傳送這些通知電子郵件。使用者可以前往 Looker 使用者頁面,重新授權 Looker 存取資料庫,避免排程和快訊中斷。詳情請參閱「個人化使用者帳戶設定」說明文件頁面。
  • 由於使用 OAuth 的資料庫連線是「每個使用者」專屬,因此快取政策也是每個使用者專屬,而不只是每個查詢專屬。也就是說,如果同一位使用者在快取期間內執行相同查詢,Looker 才會使用快取結果,而不是在快取期間內執行相同查詢時一律使用快取結果。如要進一步瞭解快取,請參閱「快取查詢」說明文件頁面。
  • 透過 OAuth 建立的 Trino 連線不支援持續衍生資料表 (PDT)
  • 當 Looker 管理員以其他使用者身分執行 sudo 時,管理員會使用該使用者的 OAuth 存取權杖。如果使用者的存取權杖已過期,管理員就無法代表該使用者建立新權杖。如要瞭解如何使用 sudo 指令,請參閱「使用者」文件頁面。
  • 從 Looker 使用 OAuth 登入 Azure AD 時,Looker 不會顯示明確的使用者同意對話方塊。透過 Looker 設定 OAuth 時,您會隱含同意 Looker 執行個體存取 Trino 資料。

註冊應用程式

如要為 Trino 啟用 OAuth,請先使用支援的身分識別提供者註冊應用程式。Looker 僅支援透過 Microsoft Entra ID (原稱 Azure AD) 使用 OAuth 搭配 Trino。

事前準備

  • 您必須擁有 Azure 訂用帳戶。
  • 您必須具備 Microsoft Entra ID 的管理權限。

如要註冊應用程式,請按照下列步驟操作:

  1. 前往 Azure 入口網站,然後使用您的憑證登入。
  2. 在 Azure 入口網站搜尋列中搜尋「Microsoft Entra ID」,然後從結果中選取該項目。
  3. 在 Microsoft Entra ID 服務中,按一下「管理」類別的「應用程式註冊」部分中的「新增註冊」
  4. 請按照下列步驟填寫註冊表單:
    • 名稱:為應用程式提供描述性名稱,例如 Looker Trino Connection
    • 支援的帳戶類型:根據您要如何限制存取權,選取適當的選項。如果是內部用途,您可以選取「Accounts in this organizational directory only」
    • 重新導向 URI:選取「Web」(網路) 平台,然後輸入 Looker 重新導向 URI。看起來應該像 https://YOUR_LOOKER_HOSTNAME/external_oath/redirect
  5. 按一下「註冊」
  6. 收集「用戶端 ID」、「租戶 ID」和「用戶端密鑰」,稍後輸入 Looker 連線。
    • 您可以在「總覽」頁面中找到「用戶端 ID」和「用戶群 ID」
    • 如果您不知道用戶端密鑰,請建立新的密鑰。按一下「管理」專區中的「憑證和密碼」,然後按一下「新增用戶端密碼」
  7. 在「管理」部分中,按一下「公開 API」
  8. 按一下「應用程式 ID URI」旁邊的「新增」
  9. 輸入客戶 ID。格式應如下所示:api://CLIENT_ID

接著,請在 Azure 入口網站中按照下列步驟,建立要與 Looker 搭配使用的新範圍:

  1. 在「這個 API 定義的範圍」部分中,按一下「新增範圍」
  2. 為新範圍新增「範圍名稱」。Looker 預期範圍名稱為:TrinoUsers.Read.All

    名稱 TrinoUsers.Read.All 代表唯讀權限,但名稱本身不會實際設定或強制執行任何權限。請務必設定範圍,只允許讀取資料庫。

  3. 新增「顯示名稱」和「說明」

  4. 在「誰可以同意?」選取器中,選取「管理員和使用者」

  5. 按一下「新增範圍」

  6. 在「已授權的用戶端應用程式」部分,按一下「新增用戶端應用程式」

  7. 輸入用戶端 ID 和新建立的範圍。

  8. 按一下 Add application

接著,請按照下列步驟操作,授予 Looker 必要的 API 權限:

  1. 在「管理」部分中,按一下「API 權限」
  2. 按一下「新增權限」
  3. 選取頂端的「我的 API」分頁標籤。
  4. 在應用程式註冊清單中,選取您剛建立的註冊項目,例如 Looker Trino Connection
  5. 勾選「委派的權限」核取方塊。
  6. 勾選「TrinoUsers.Read.All」TrinoUsers.Read.All核取方塊。
  7. 選取「新增權限」

設定資料庫以使用 OAuth

接著,如要設定 Trino 資料庫使用 OAuth,請在 Trino config.properties 檔案中新增下列程式碼。(請將前五行的大寫變數替換為您自己的值)。

  • YOUR_HTTPS_PORT
  • PATH_TO_YOUR_SSL_CERTIFICATE
  • YOUR_TENANT_ID
  • YOUR_CLIENT_ID
  • YOUR_SHARED_SECRET
# enable SSL for OAuth
http-server.https.enabled=true
http-server.https.port=YOUR_HTTPS_PORT
http-server.https.keystore.path=PATH_TO_YOUR_SSL_CERTIFICATE

# enable OAuth 2.0
http-server.authentication.type=oauth2
http-server.authentication.oauth2.issuer=https://sts.windows.net/YOUR_TENANT_ID/
http-server.authentication.oauth2.client-id=NA_required_but_not_used
http-server.authentication.oauth2.client-secret=NA_required_but_not_used

# turn off oidc discovery - Trino will inspect tokens locally instead
http-server.authentication.oauth2.oidc.discovery=false

# URLs that Trino requires for OAuth
http-server.authentication.oauth2.jwks-url=https://login.microsoftonline.com/common/discovery/v2.0/keys
http-server.authentication.oauth2.auth-url=NA_required_but_not_used
http-server.authentication.oauth2.token-url=NA_required_but_not_used

# add audience that matches the Azure AD's Application ID URI
http-server.authentication.oauth2.additional-audiences=api://YOUR_CLIENT_ID

# set shared-secret required for internal Trino communication when authentication is enabled, see: https://github.com/trinodb/trino/issues/12397
# can be generated with the following Linux command: openssl rand 512 | base64
internal-communication.shared-secret=YOUR_SHARED_SECRET

# optionally, allow some insecure http traffic
# http-server.authentication.allow-insecure-over-http=true

登入以執行查詢

設定資料庫連線以使用 OAuth 後,系統會提示使用者先登入 Microsoft Entra ID,才能執行查詢。包括來自「探索」、「資訊主頁」、「Look」和「SQL Runner」的查詢。

使用者也可以在「帳戶」頁面的「OAuth 連線憑證」部分登入 Microsoft Entra ID。

如要使用 Looker 登入 Microsoft Entra ID,請按照下列步驟操作:

  1. 按一下 Looker 使用者選單。
  2. 選取「帳戶」
  3. 在「帳戶」頁面的「OAuth 連線憑證」部分,按一下「登入」

這個動作會顯示登入對話方塊。輸入 Microsoft Entra ID 憑證,然後選取「登入」,授予 Looker 資料庫帳戶存取權。

透過 Looker 登入 Microsoft Entra ID 後,您隨時可以透過「帳戶」頁面登出或重新授權憑證,詳情請參閱「個人化使用者帳戶」說明文件頁面。

參考資料

如要進一步瞭解如何設定 Hive 連接器,請參閱 PrestoDB Hive 連接器Trino Hive 連接器Starburst Hive 連接器

功能支援

如要讓 Looker 支援某些功能,資料庫方言也必須支援這些功能。

自 Looker 25.10 起,PrestoDB 支援下列功能:

功能 是否支援?
支援級別
支援
Looker (Google Cloud Core)
對稱式匯總函式
衍生資料表
永久 SQL 衍生資料表
永久原生衍生資料表
穩定版檢視畫面
終止查詢
以 SQL 為基礎的樞紐
時區
SSL
小計
JDBC 其他參數
區分大小寫
位置類型
名單類型
百分位數
不重複值的百分位數
SQL Runner 顯示程序
SQL Runner 說明資料表
SQL Runner 顯示索引
SQL Runner 選取 10
SQL Runner 計數
SQL 說明
OAuth 2.0 憑證
背景資訊註解
連線集區
HLL 草圖
匯總知名度
增量 PDT
毫秒
微秒
具體化檢視表
與前一段時期相比的指標
不重複值的概略計數

自 Looker 25.10 起,Trino 支援下列功能:

功能 是否支援?
支援級別
支援
Looker (Google Cloud Core)
對稱式匯總函式
衍生資料表
永久 SQL 衍生資料表
永久原生衍生資料表
穩定版檢視畫面
終止查詢
以 SQL 為基礎的樞紐
時區
SSL
小計
JDBC 其他參數
區分大小寫
位置類型
名單類型
百分位數
不重複值的百分位數
SQL Runner 顯示程序
SQL Runner 說明資料表
SQL Runner 顯示索引
SQL Runner 選取 10
SQL Runner 計數
SQL 說明
OAuth 2.0 憑證
背景資訊註解
連線集區
HLL 草圖
匯總知名度
增量 PDT
毫秒
微秒
具體化檢視表
與前一段時期相比的指標
不重複值的概略計數

後續步驟

將資料庫連線至 Looker 後,請為使用者設定登入選項