共用方式為


在 Oracle 上執行同盟查詢

重要

這項功能 公開預覽版

本文說明如何 set Up Lakehouse Federation,對 Azure Databricks 未管理的 Oracle 數據執行同盟查詢。 若要深入瞭解 Lakehouse 同盟,請參閱 什麼是 Lakehouse 同盟?

若要使用 Lakehouse Federation 連線到 Oracle 資料庫,您必須在 Azure Databricks Unity Catalog 中繼存放區中建立下列項目:

  • 連線 至 Oracle 資料庫。
  • 在 Unity Catalog 中建立一個鏡像的 Oracle 資料庫 外部 catalog,讓您可以利用 Unity Catalog 的查詢語法和數據治理工具來管理 Azure Databricks 使用者對資料庫的存取權限。

開始之前

開始之前,請確定您符合本節中的需求。

Databricks 需求

工作區需求:

  • 針對 Unity Catalog啟用工作區。

計算需求:

  • 計算資源與目標資料庫系統之間的網路連線。 請參閱 Lakehouse Federation的 網路建議。
  • Azure Databricks 計算必須使用 Databricks Runtime 16.1 或更新版本,並採用 共用單一使用者 存取模式。
  • SQL 倉儲必須是專業或無伺服器,且必須使用 2024.50 或更新版本。

需要的權限:

  • 若要建立連線,您必須是中繼存放區系統管理員或具有附加至工作區之 Unity Catalog 中繼存放區 CREATE CONNECTION 許可權的使用者。
  • 若要建立外部 catalog,您必須擁有中繼存放區的 CREATE CATALOG 許可權,並且必須是連線的擁有者,或擁有對該連線的 CREATE FOREIGN CATALOG 許可權。

接下來每個任務為基礎的區段中會詳細說明額外的權限需求。

Oracle 需求

  • 已啟用伺服器端加密。

建立 Azure Databricks 連線

連線會指定用於存取外部資料庫系統的路徑和 credentials。 若要建立連線,您可以在 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中使用 Catalog Explorer 或 CREATE CONNECTION SQL 命令。

注意

您也可以使用 Databricks REST API 或 Databricks CLI 來建立連線。 請參閱 POST /api/2.1/unity-catalog/connectionsUnity Catalog 命令

需要 許可權: 具有 CREATE CONNECTION 許可權的中繼存放區系統管理員或使用者。

Catalog 探險家

  1. 在 Azure Databricks 工作區中,按兩下 Catalog 圖示Catalog
  2. 在左窗格中,展開 [外部數據] 功能表,然後 selectConnections
  3. 按下 「建立連線」
  4. 輸入使用者易記 連線名稱
  5. Select 連線類型Oracle
  6. 輸入 Oracle 實體的下列連接屬性:
    • 主機:例如,oracle-demo.123456.rds.amazonaws.com
    • :例如,1521
    • 使用者:例如,oracle_user
    • 密碼:例如,password123
  7. (選擇性)新增批注。
  8. 點擊 建立

SQL

在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:

CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

Databricks 建議您使用 Azure Databricks 機密,而不是例如 credentials等純文本字串來處理敏感性資訊 values。 例如:

CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

如果您必須在 Notebook SQL 命令中使用純文字字串,請避免透過逸出特殊字元,例如搭配 $\ 等特殊字元來截斷字串。 例如:\$

如需設定秘密的相關信息,請參閱 秘密管理

建立外部 catalog

外部 catalog 會鏡像外部數據系統中的資料庫,讓您可以使用 Azure Databricks 和 Unity Catalog查詢和管理該資料庫中數據的存取權。 若要建立外來 catalog,您可以使用已定義的資料來源連線。

若要建立外部 catalog,您可以在 Azure Databricks 筆記本或 SQL 查詢編輯器中使用 Catalog Explorer 或 CREATE FOREIGN CATALOG SQL 命令。

注意

您也可以使用 Databricks REST API 或 Databricks CLI 來建立 catalog。 請參閱 POST /api/2.1/unity-catalog/catalogsUnity Catalog 命令

需要 許可權:在中繼存放區具有CREATE CATALOG 許可權,並且擁有連線或在連線上具有 CREATE FOREIGN CATALOG 權限。

Catalog 探險者

  1. 在 Azure Databricks 工作區中,按兩下 [Catalog] 圖示Catalog 以開啟 Catalog Explorer。

  2. 在 [Catalog] 窗格頂端,單擊 [新增] 或 [加號] 圖示,[新增] 圖示,然後從功能表 select[新增 catalog]。

    或者,從 [快速存取] 頁面中,按一下 [Catalogs] 按鈕,然後按一下 [建立 catalog] 按鈕。

  3. 請遵循在 Create catalogs中建立外部 catalogs 的指示。

SQL

在筆記本或 SQL 查詢編輯器中執行下列 SQL 命令。 括弧中的項目是選擇性專案。 替換佔位符 values。

  • <catalog-name>:Azure Databricks 中 catalog 的名稱。
  • <connection-name>:指定數據源、路徑和存取 credentials的 連接物件
  • <service-name>:您想要在 Azure Databricks 中鏡像為 catalog 的服務名稱。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');

支援的推動技術

支援以下操作:

  • 過濾器
  • 預測
  • Limit
  • 集 料
  • Offset
  • 投放
  • 包含、開頭是、結尾是

數據類型對應

當您從 Oracle 讀取至 Spark 時,資料類型會映射如下:

Oracle 類型 Spark 類型
TIMESTAMP WITH TIMEZONE、TIMESTAMP WITH LOCAL TIMEZONE 時間戳記類型
日期、時間戳記 TimestampType/TimestampNTZType*
NUMBER、FLOAT 十進制類型
二進位浮點數 浮點數類型
二進制雙精度浮點數 DoubleType
CHAR、NCHAR、VARCHAR2、NVARCHAR2 字串類型
  • 如果 spark.sql.timestampType = TIMESTAMP_LTZ ,DATE 和 TIMESTAMP 會對應至 Spark TimestampType (預設值)。 如果滿足 spark.sql.timestampType = TIMESTAMP_NTZ條件,它們會對應至 TimestampNTZType。