共用方式為


如何搭配 Apache Spark™ 叢集使用 Hive 中繼存放區

重要

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

在多個服務之間共用資料中繼存放區是非常重要。 HIVE 中繼存放區中常用的中繼存放區之一。 AKS 上的 HDInsight 可讓使用者連線到外部中繼存放區。 此步驟可讓 HDInsight 使用者順暢地連線到生態系統中的其他服務。

AKS 上的 Azure HDInsight 支援自訂中繼存放區,這建議用於生產環境叢集。 涉及的關鍵步驟如下:

  1. 建立 Azure SQL 資料庫
  2. 建立金鑰保存庫以儲存認證
  3. 使用 Apache Spark™ 在 AKS 叢集上建立 HDInsight 時設定中繼存放區
  4. 在外部中繼存放區上操作 (顯示資料庫並執行選取限制 1)。

當您建立叢集時,HDInsight 服務必須連線到外部中繼存放區,並驗證您的認證。

建立 Azure SQL 資料庫

  1. 先建立或擁有現有的 Azure SQL Database,再設定 HDInsight 叢集的自訂 Hive 中繼存放區。

    注意

    目前,我們僅支持適用於 HIVE 中繼存放區的 Azure SQL Database。 由於 Hive 的限制,不支援中繼存放區資料庫名稱中的「-」(連字元)。

建立金鑰保存庫以儲存認證

  1. 建立 Azure Key Vault。

    Key Vault 的用途是讓您在 SQL 資料庫建立期間儲存 SQL Server 管理員密碼集合。 AKS 平台上的 HDInsight 不會直接處理認證。 因此,您必須將重要認證儲存在 Azure Key Vault 中。 了解建立 Azure Key Vault 的步驟。

  2. 建立 Azure Key Vault 之後,請指派下列角色

    Object 角色 備註
    使用者指派的受控識別 (與 HDInsight 叢集所使用的相同 UAMI) Key Vault 祕密使用者 了解如何將角色指派至 UAMI
    使用者 (在 Azure Key Vault 中建立秘密的人員) Key Vault 系統管理員 了解如何將角色指派至使用者

    注意

    如果沒有此角色,使用者就無法建立秘密。

  3. 建立密碼

    此步驟可讓您將 SQL Server 管理員密碼保留為 Azure Key Vault 中的秘密。 在新增秘密時,將您的密碼 (與 SQL DB 中提供給管理員的密碼相同) 新增在 [值] 欄位中。

    顯示如何建立金鑰保存庫的螢幕快照。

    顯示如何建立秘密的螢幕快照。

    注意

    請務必記下秘密名稱,因為您在建立叢集期間需要此名稱。

建立 HDInsight Spark 叢集時設定中繼存放區

  1. 瀏覽至 AKS 叢集集區上的 HDInsight 以建立叢集。

    顯示如何建立新叢集的螢幕快照。

  2. 啟用切換按鈕以新增外部 Hive 中繼存放區,並填入下列詳細資料。

    顯示基本索引標籤的螢幕快照。

  3. 其餘詳細資料會根據 AKS 上 HDInsight 中 Apache Spark 叢集的叢集建立規則加以填入。

  4. 按一下 [檢閱及建立]

    顯示檢閱和建立索引標籤的螢幕快照。

    注意

    • 中繼存放區的生命週期未繫結至叢集生命週期,讓您可以建立和刪除叢集,而不會遺失中繼資料。 即使在刪除並重新建立 HDInsight 叢集之後,中繼資料 (例如 Hive 結構描述) 仍會保存。
    • 自訂中繼存放區可讓您將多個叢集與叢集類型連結至該中繼存放區。

在外部中繼存放區上操作

  1. 建立表格

    >> spark.sql("CREATE TABLE sampleTable (number Int, word String)")

    顯示如何建立數據表的螢幕快照。

  2. 將資料新增在資料表上

    >> spark.sql("INSERT INTO sampleTable VALUES (123, \"HDIonAKS\")");\

    顯示 insert 語句的螢幕快照。

  3. 讀取資料表

    >> spark.sql("select * from sampleTable").show()

    顯示如何讀取數據表的螢幕快照。

參考