此頁面描述如何設定 Lakehouse 同盟,以在 Azure Databricks 未管理的 Teradata 數據上執行同盟查詢。 若要深入瞭解 Lakehouse 同盟,請參閱 什麼是 Lakehouse 同盟?
若要使用 Lakehouse 聯邦連線到您的 Teradata 資料庫,您必須在 Azure Databricks Unity Catalog 中繼資料庫中建立以下項目:
- Teradata 資料庫的 連線。
- 外部目錄,鏡像 Unity 目錄中的 Teradata 資料庫,讓您可以使用 Unity 目錄查詢語法和數據控管工具來管理 Azure Databricks 使用者對資料庫的存取權。
開始之前
開始之前,請確定您符合本節中的需求。
Databricks 需求
工作區需求:
- 工作區已啟用以支援 Unity 目錄。
計算需求:
- 從您的運算資源到目標資料庫系統的網路連線狀況。 請參閱 Lakehouse Federation 的網路建議。
- Azure Databricks 計算需要使用 Databricks Runtime 16.1 或更新版本,以及 Standard 或 Dedicated 訪問模式。
- SQL 倉儲必須是專業或無伺服器,且必須使用 2024.50 或更新版本。
需要的權限:
- 若要建立連線,您必須是中繼存放區系統管理員,或是具有附加至工作區之 Unity 目錄中繼存放區
CREATE CONNECTION許可權的使用者。 - 若要建立外部目錄,您必須在中繼存放區擁有
CREATE CATALOG許可權,並且必須是連線的擁有者或具有連線的CREATE FOREIGN CATALOG權限。
後續每個以工作為基礎的區段會指定其他許可權需求。
Teradata TLS
- 您可以選擇
require、、preferverify-caverify-full、SSL 模式。 如果您不使用 TLS(不建議),您應該選擇prefer(可以設定埠號碼)。 如果您使用 TLS,任何選項都已足夠(埠會是 443)(verify-ca並verify-full強化連線的安全性,但需要在伺服器端進行更多設定)。 如需詳細資訊,請參閱 Teradata 檔中 如何使用 TLS 保護連線。
建立 Azure Databricks 連線
連接會指定用來存取外部資料庫系統的路徑和認證。 若要建立連線,您可以在 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中使用目錄總管或 CREATE CONNECTION SQL 命令。
Note
您也可以使用 Databricks REST API 或 Databricks CLI 來建立連線。 請參閱 POST /api/2.1/unity-catalog/connections 和 Unity Catalog 命令。
需要 許可權: 具有 CREATE CONNECTION 許可權的中繼存放區系統管理員或使用者。
目錄檢視器
在您的 Azure Databricks 工作區中,按兩下
目錄。
在 [目錄] 窗格頂端,單擊
[新增] 圖標,然後從功能表選取 [新增連線 ]。或者,從 [快速存取] 頁面,按兩下 [外部數據 >] 按鈕,移至 [連線] 索引卷標,然後按兩下 [建立連線]。
在 [設置連線 精靈的 [連線基本概念] 頁面上,輸入易於識別的 連線名稱。
選擇 連線類型 中的 Teradata。
(選擇性)新增批注。
按 [下一步]。
在 [驗證] 頁面上,輸入 Teradata 實例的下列連線屬性:
-
主機:例如,
teradata-demo.teradata.com -
埠:例如,
1025 -
使用者:例如,
teradata_user -
密碼:例如,
password123 -
Ssl 模式:
require、、prefer、verify-caverify-full
-
主機:例如,
點選 「建立連線」。
在 目錄基本概念 頁面上,輸入外國目錄的名稱。 外部目錄會鏡像外部數據系統中的資料庫,讓您可以使用 Azure Databricks 和 Unity 目錄來查詢和管理該資料庫中數據的存取權。
(選擇性)按一下 測試連線 以確認它是否正常運作。
點選 「建立目錄」。
在 [Access] 頁面上,選擇使用者可以存取您所建立目錄的工作區。 您可以選擇所有工作區都有存取權,或點擊指派到工作區,選擇工作區,然後點擊指派。
變更 擁有者,以管理目錄中所有物件的存取權。 在文字框中開始輸入主體,然後在傳回的結果中點選主體。
在目錄上賦予 許可權。 請點擊授與:
- 指定 主體 誰可以存取目錄中的物件。 在文字框中開始輸入主體,然後在傳回的結果中點選主體。
- 選取 許可權預設,以授與每個主體。 根據預設,所有帳戶用戶都會被授與
BROWSE。- 從下拉功能表中選取 [數據讀取器],以授與目錄中物件
read許可權。 - 從下拉功能表中選取 [數據編輯器],以授與目錄中物件的
read和modify許可權。 - 手動選取要授與的許可權。
- 從下拉功能表中選取 [數據讀取器],以授與目錄中物件
- 請按一下 授權。
按 [下一步]。
在 [元數據 頁面上,指定標記索引鍵/值組。 如需詳細資訊,請參閱 將標籤套用至 Unity Catalog 的可保護物件。
(選擇性)新增批注。
點選 [儲存]。
SQL
在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:
CREATE CONNECTION <connection-name> TYPE teradata
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>',
ssl_mode '<ssl_mode>' -- optional
);
Databricks 建議您使用 Azure Databricks 秘密,而不是使用純文本字串來取得敏感性值,例如認證。 例如:
CREATE CONNECTION <connection-name> TYPE teradata
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>'),
ssl_mode '<ssl_mode>' -- optional
)
如果您必須在 Notebook SQL 命令中使用純文字字串,請避免透過逸出特殊字元,例如搭配 $\ 等特殊字元來截斷字串。 例如:\$。
如需設定秘密的相關信息,請參閱 秘密管理。
建立外國目錄
Note
如果您使用 UI 來建立資料來源的連線,則會包含外部目錄的建立,而且您可以略過此步驟。
外部目錄會鏡像外部數據系統中的資料庫,讓您可以使用 Azure Databricks 和 Unity 目錄來查詢和管理該資料庫中數據的存取權。 若要建立外部目錄,您可以使用已定義的數據源連線。
若要建立外部目錄,您可以在 Azure Databricks 筆記本或 SQL 查詢編輯器中使用目錄總管或 CREATE FOREIGN CATALOG SQL 命令。 您也可以使用 Databricks REST API 或 Databricks CLI 來建立目錄。 請參閱 POST /api/2.1/unity-catalog/catalogs 和 的 Unity Catalog 指令。
需要 許可權:CREATE CATALOG 中繼存放區的許可權,以及連線的擁有權或連線 CREATE FOREIGN CATALOG 許可權。
目錄檢視器
在您的 Azure Databricks 工作區中,按一下
以開啟目錄總管。
在 [目錄] 窗格頂端,按兩下
[新增] 圖示,然後從功能表中選取 [新增目錄 ]。或者,從 [快速存取] 頁面,按一下 [目錄] 按鈕,然後按一下 [建立目錄] 按鈕。
請遵循在 建立目錄中建立外國目錄的指示。
SQL
在筆記本或 SQL 查詢編輯器中執行下列 SQL 命令。 括弧中的項目是選擇性專案。 替換佔位符的值。
-
<catalog-name>:Azure Databricks 中目錄的名稱。 -
<connection-name>:指定數據源、路徑和存取認證的 連接物件。 -
<database-name>:您想要在 Azure Databricks 中鏡像為目錄的資料庫名稱。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
支援的下推策略
支援以下下推功能:
- Filters
- Projections
- Limit
- Aggregates
- Cast
- 包含、開始於、結束於、類似
數據類型對應
當您將資料從 Teradata 讀取至 Spark 時,資料類型將對應如下:
| Teradata 類型 | Spark 類型 |
|---|---|
| 位元組,黏液 | BinaryType |
| Byteint、Smallint、Integer | IntegerType |
| BigInt | LongType |
| Float、Double、Double Precision | DoubleType |
| 數字(n,m) | DecimalType |
| 數字(*,m),數字(*),數字 | Unsupported |
| Varchar(N) | StringType |
| 時間、時間戳記 | TimestampType |