在 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/connections 和 Unity Catalog 命令。
需要 許可權: 具有 CREATE CONNECTION
許可權的中繼存放區系統管理員或使用者。
Catalog 探險家
- 在 Azure Databricks 工作區中,按兩下 Catalog。
- 在左窗格中,展開 [外部數據] 功能表,然後 selectConnections。
- 按下 「建立連線」。
- 輸入使用者易記 連線名稱。
- Select 連線類型 的 Oracle。
- 輸入 Oracle 實體的下列連接屬性:
-
主機:例如,
oracle-demo.123456.rds.amazonaws.com
-
埠:例如,
1521
-
使用者:例如,
oracle_user
-
密碼:例如,
password123
-
主機:例如,
- (選擇性)新增批注。
- 點擊 建立。
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/catalogs 和 Unity Catalog 命令。
需要 許可權:在中繼存放區具有CREATE CATALOG
許可權,並且擁有連線或在連線上具有 CREATE FOREIGN CATALOG
權限。
Catalog 探險者
在 Azure Databricks 工作區中,按兩下 [Catalog 以開啟 Catalog Explorer。
在 [Catalog] 窗格頂端,單擊 [新增] 圖示,然後從功能表 select[新增 catalog]。
或者,從 [快速存取] 頁面中,按一下 [Catalogs] 按鈕,然後按一下 [建立 catalog] 按鈕。
請遵循在 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。