共用方式為


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

重要

此功能目前為預覽功能。 適用於 Microsoft Azure 預覽版的補充使用規定包含適用於 Beta 版、預覽版或尚未發行至正式運作之 Azure 功能的更合法條款。 如需此特定預覽的相關信息,請參閱 AKS 預覽資訊的 Azure HDInsight。 如需問題或功能建議,請在 AskHDInsight提交要求,並提供詳細數據,並遵循我們在 Azure HDInsight 社群取得更多更新。

Hive 中繼存放區是一個中央存放庫,用於儲存資料相關中繼資料。 本文說明如何使用 HDInsight on AKS 將 Hive 中繼存放區資料庫新增至 Trino 叢集。 有兩種方式:

  • 您可以在建立 Trino 叢集期間,新增 Hive 目錄,並將其連結至外部 Hive 中繼存放區資料庫。

  • 您可以使用 ARM 範本更新,新增 Hive 目錄,並將外部 Hive 中繼存放區資料庫連結至您的叢集。

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

必要條件

注意

  • 目前,我們支援 Azure SQL Database 作為內建的中繼存放區。
  • 由於 Hive 限制,不支援中繼存放區資料庫名稱中使用「-」(連字號) 字元。
  • 僅支援單一中繼存放區資料庫連結,clusterProfile.trinoProfile.catalogOptions.hive 區段中所列的所有目錄都會設定為使用首先指定的一個相同資料庫參數。

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

您需要新增至叢集 ARM 範本以設定 Hive 目錄和 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 secretsProfile 中以密碼設定的秘密 referenceName。 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 Hive 中繼存放區的秘密儲存所在 Azure Key Vault 的 Azure 資源識別碼字串。 /subscriptions/0000000-0000-0000-0000-000000000000/resourceGroups/trino-rg/providers/Microsoft.KeyVault/vaults/trinoakv
secretsProfile.secrets[*].referenceName 稍後要使用於 clusterProfile 之秘密的唯一參考名稱。 Secret1_ref
secretsProfile.secrets[*].type Azure Key Vault 中的物件類型,僅支援「秘密」。 祕密
secretsProfile.secrets[*].keyVaultObjectName Azure Key Vault 中含有實際秘密值的秘密物件名稱。 secret1

目錄組態

為了讓 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;

替代組態

或者,外部 Hive 中繼存放區資料庫參數可以在 trinoProfile.catalogOptions.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 secretsProfile 中以密碼設定的秘密 referenceName。 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"
                                }
                            ]
                        }
                    }
                }
            }
        }
    ]
}