共用方式為


使用外部Hive中繼存放區資料庫

重要

AKS 上的 Azure HDInsight 於 2025 年 1 月 31 日淘汰。 透過此公告 深入瞭解

您必須將工作負載移轉至 Microsoft Fabric 或對等 Azure 產品,以避免突然終止工作負載。

重要

這項功能目前為預覽狀態。 Microsoft Azure 預覽版的補充使用規定 包含適用於 Beta 版、預覽版或尚未正式發行之 Azure 功能的更合法條款。 如需此特定預覽的相關資訊,請參閱 AKS 預覽資訊上的 Azure HDInsight。 如有問題或功能建議,請在 AskHDInsight 提交請求,並關注我們以獲取 Azure HDInsight 社群 的更多更新。

Hive 中繼資料存放區用來作為儲存數據元資料的中央資料庫。 本文說明如何在 AKS 上使用 HDInsight 將 Hive 中繼存放區資料庫新增至 Trino 叢集。 有兩種方式:

下列範例涵蓋使用ARM範本將Hive目錄和中繼存放區資料庫新增至叢集。

先決條件

  • 在 AKS 上使用 HDInsight 的作業 Trino 叢集。
  • 為叢集建立 ARM 範本
  • 檢閱完整的叢集 ARM 範本 範例。
  • 熟悉撰寫和部署 ARM 範本

注意

  • 目前,我們支援 Azure SQL Database 作為內建中繼存放區。
  • 由於Hive限制,不支援中繼存放區資料庫名稱中的 “-” (連字元) 字元。
  • 僅支援單一的中繼存放區資料庫連線,clusterProfile.trinoProfile.catalogOptions.hive 區段中列出的所有目錄將被配置為使用首先指定的相同資料庫參數。

新增外部 Hive 中繼存放區資料庫

您需要將幾個重要區段加入至叢集 ARM 範本,以設定 Hive 目錄與中繼資料庫:

中繼存放區組態

config.properties 檔案中設定外部 Hive 中繼存放區資料庫:

{
    "fileName": "config.properties",
    "values": {
        "hive.metastore.hdi.metastoreDbConnectionURL": "jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30",
        "hive.metastore.hdi.metastoreDbConnectionUserName": "trinoadmin",
        "hive.metastore.hdi.metastoreDbConnectionPasswordSecret": "hms-db-pwd",
        "hive.metastore.hdi.metastoreWarehouseDir": "abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse"
    }
}
財產 描述
hive.metastore.hdi.metastoreDbConnectionURL 資料庫的 JDBC 連接字串。 jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30
hive.metastore.hdi.metastoreDbConnectionUserName 要連線到資料庫的 SQL 用戶名稱。 trinoadmin
hive.metastore.hdi.metastoreDbConnectionPasswordSecret 秘密 referenceName 以密碼設定於 secretsProfile 中。 hms-db-pwd
hive.metastore.hdi.metastoreWarehouseDir 儲存數據之記憶體中位置的 ABFS URI。 abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

中繼存放區驗證

設定外部 Hive 中繼存放區資料庫的驗證,以指定 Azure Key Vault 秘密。

注意

referenceName 應符合 hive.metastore.hdi.metastoreDbConnectionPasswordSecret 中提供的值

"secretsProfile": {
    "keyVaultResourceId": "/subscriptions/{USER_SUBSCRIPTION_ID}/resourceGroups/{USER_RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/{USER_KEYVAULT_NAME}",
    "secrets": [
        {
            "referenceName": "hms-db-pwd",
            "type": "Secret",
            "keyVaultObjectName": "hms-db-pwd"
        }                        ]
},
財產 描述
secretsProfile.keyVaultResourceId Azure 資源識別碼字串,對應到儲存 Hive 中繼存放區秘密的 Azure Key Vault。 /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv
秘密設定檔.秘密[*].引用名稱 稍後在 clusterProfile 中使用的秘密唯一參考名稱。 Secret1_ref
secretsProfile.secrets[*].type Azure Key Vault 中的物件類型,僅支援「秘密」。 秘密
secretsProfile.secrets[*].keyVaultObjectName Azure Key Vault 中含有實際秘密值的秘密物件名稱。 秘密1

目錄組態

為了使 Trino 目錄能夠使用外部 Hive 中繼資料庫,應指定 hive.metastore=hdi 屬性。 如需詳細資訊,請參閱 將目錄新增至現有的叢集

{
    "fileName": "hive1.properties",
    "values": {
        "connector.name": "hive",
        "hive.metastore": "hdi"
    }
}

完整範例

若要將外部 Hive 中繼存放區設定為現有的 Trino 叢集,請參考下列範例,在叢集 ARM 範本中新增必要的區段:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "resources": [
        {
            "type": "microsoft.hdinsight/clusterpools/clusters",
            "apiVersion": "<api-version>",
            "name": "<cluster-pool-name>/<cluster-name>",
            "location": "<region, e.g. westeurope>",
            "tags": {},
            "properties": {
                "clusterType": "Trino",

                "clusterProfile": {
                    "secretsProfile": {
                        "keyVaultResourceId": "/subscriptions/{USER_SUBSCRIPTION_ID}/resourceGroups/{USER_RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/{USER_KEYVAULT_NAME}",
                        "secrets": [
                            {
                                "referenceName": "hms-db-pwd",
                                "type": "Secret",
                                "keyVaultObjectName": "hms-db-pwd"
                            }                        ]
                    },
                    "serviceConfigsProfiles": [
                        {
                            "serviceName": "trino",
                            "configs": [
                                {
                                    "component": "common",
                                    "files": [
                                        {
                                            "fileName": "config.properties",
                                            "values": {
                                                "hive.metastore.hdi.metastoreDbConnectionURL": "jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30",
                                                "hive.metastore.hdi.metastoreDbConnectionUserName": "trinoadmin",
                                                "hive.metastore.hdi.metastoreDbConnectionPasswordSecret": "hms-db-pwd",
                                                "hive.metastore.hdi.metastoreWarehouseDir": "abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse"
                                            }
                                        }
                                    ]
                                },
                                {
                                    "component": "catalogs",
                                    "files": [
                                        {
                                            "fileName": "hive1.properties",
                                            "values": {
                                                "connector.name": "hive",
                                                "hive.metastore": "hdi"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            }
        }
    ]
}

部署更新的 ARM 範本,以反映叢集中的變更。 瞭解如何 部署 ARM 模板。 成功部署之後,您可以在 Trino 叢集中看到 “hive1” 目錄。

您可以執行幾個簡單的查詢以嘗試 Hive 目錄。

檢查Hive目錄是否已成功建立。

show catalogs;

查詢資料表 (在此範例中,“hive1” 是指定的 Hive 目錄名稱。

create schema hive1.schema1;
create table hive1.schema1.tpchorders as select * from tpch.tiny.orders;
select * from hive1.schema1.tpchorders limit 100;

替代組態

或者,可以在 trinoProfile.catalogOptions.hive 中設定外部 Hive 中繼存放區的資料庫參數,以及 hive.metastore=hdi 的目錄屬性。

財產 描述
trinoProfile.catalogOptions.hive 具有外部 Hive 中繼存放區資料庫參數的 Hive、Iceberg 或 Delta 目錄清單,每個目錄需要指定的參數。 若要使用外部中繼存放區資料庫,目錄必須存在於此清單中。
trinoProfile.catalogOptions.hive[*].catalogName serviceConfigsProfiles中設定的 Trino 目錄名稱,其設定為使用外部 Hive 中繼存放區資料庫。 hive1
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionURL 資料庫的 JDBC 連接字串。 jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionUserName 要連線到資料庫的 SQL 用戶名稱。 trinoadmin
trinoProfile.catalogOptions.hive[*].metastoreDbConnectionPasswordSecret 秘密 referenceName 以密碼設定於 secretsProfile 中。 hms-db-pwd
trinoProfile.catalogOptions.hive[*].metastoreWarehouseDir 儲存數據位置的 ABFS URI。 abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse

完整範例

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "resources": [
        {
            "type": "microsoft.hdinsight/clusterpools/clusters",
            "apiVersion": "<api-version>",
            "name": "<cluster-pool-name>/<cluster-name>",
            "location": "<region, e.g. westeurope>",
            "tags": {},
            "properties": {
                "clusterType": "Trino",

                "clusterProfile": {
                    "secretsProfile": {
                        "keyVaultResourceId": "/subscriptions/{USER_SUBSCRIPTION_ID}/resourceGroups/{USER_RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/{USER_KEYVAULT_NAME}",
                        "secrets": [
                            {
                                "referenceName": "hms-db-pwd",
                                "type": "Secret",
                                "keyVaultObjectName": "hms-db-pwd"
                            }                        ]
                    },
                    "serviceConfigsProfiles": [
                        {
                            "serviceName": "trino",
                            "configs": [
                                {
                                    "component": "catalogs",
                                    "files": [
                                        {
                                            "fileName": "hive1.properties",
                                            "values": {
                                                "connector.name": "hive",
                                                "hive.metastore": "hdi"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ],
                    "trinoProfile": {
                        "catalogOptions": {
                            "hive": [
                                {
                                    "catalogName": "hive1",
                                    "metastoreDbConnectionURL": "jdbc:sqlserver://server-name.database.windows.net;database=myhmsdb1;encrypt=true;trustServerCertificate=true;create=false;loginTimeout=30",
                                    "metastoreDbConnectionUserName": "trinoadmin",
                                    "metastoreDbConnectionPasswordSecret": "hms-db-pwd",
                                    "metastoreWarehouseDir": "abfs://container1@myadlsgen2account1.dfs.core.windows.net/hive/warehouse"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}