共用方式為


建立 HDInsight 叢集時新增自訂 Apache Hive 程式庫

了解如何預先載入 HDInsight 上的 Apache Hive 程式庫。 本文件包含如何在叢集建立期間使用「指令碼動作」預先載入程式庫的詳細資訊。 使用本文件中的步驟新增的程式庫在 Hive 中全域可用 - 不需要使用 ADD JAR 來載入。

運作方式

在建立叢集時,您可以使用「指令碼動作」修改已建立的叢集節點。 本文件中的指令碼會接受單一參數,也就是程式庫的位置。 這個位置必須在 Azure 儲存體帳戶中,且將程式庫必須儲存為 jar 檔案。

叢集建立期間,指令碼會列舉檔案、將它們複製到前端和背景工作節點上的 /usr/lib/customhivelibs/ 目錄,然後將它們加入至 core-site.xml 檔案中的 hive.aux.jars.path 屬性。 在以 Linux 為基礎的叢集上,它也會以檔案的位置來更新 hive-env.sh 檔案。

使用本文中的指令碼動作可讓您在使用適用於 WebHCatHiveServer2 的 Hive 用戶端時使用程式庫。

指令碼

指令碼位置

https://hdiconfigactions.blob.core.windows.net/setupcustomhivelibsv01/setup-customhivelibs-v01.ps1

需求

  • 指令碼必須同時套用至前端節點背景工作節點

  • 您想要安裝的 jar 必須儲存在單一容器中的 Azure Blob 儲存體。

  • 包含 jar 檔案程式庫的儲存體帳戶必須在建立期間連結至 HDInsight 叢集。 必須是預設儲存體帳戶,或透過儲存體帳戶設定新增的帳戶。

  • 必須指定容器的 WASB 路徑做為指令碼動作的參數。 例如,如果 jar 儲存在名為 mystorage 的儲存體帳戶上稱為 libs 的容器中,則這個參數會是 wasbs://libs@mystorage.blob.core.windows.net/

    注意

    本文件假設您已建立儲存體帳戶、blob 容器,也已將檔案上傳給它。

    如果您尚未建立儲存體帳戶,您可以透過 Azure 入口網站來建立。 接著,您可以使用 Azure 儲存體 Explorer 之類的公用程式,在帳戶中建立容器,並將檔案上傳至其中。

使用指令碼建立叢集

  1. 使用在 Linux 上佈建 HDInsight 叢集中的步驟開始佈建叢集,但不要完成佈建。 您也可以使用 Azure PowerShell 或 HDInsight .NET SDK,以使用此指令碼建立叢集。 如需使用這些方法的詳細資訊,請參閱 使用指令碼動作自訂 HDInsight 叢集。 針對 Azure 入口網站,從 [設定 + 定價] 索引標籤中,選取 [+ 新增指令碼動作]

  2. 針對 [儲存體],如果包含 jar 檔案庫的儲存體帳戶與叢集所使用的帳戶不同,請完成 [其他儲存體帳戶]

  3. 針對 [指令碼動作],請提供下列資訊:

    屬性
    指令碼類型 - 自訂
    名稱 程式庫
    Bash 指令碼 URI https://hdiconfigactions.blob.core.windows.net/linuxsetupcustomhivelibsv01/setup-customhivelibs-v01.sh
    節點類型 Head、Worker
    參數 輸入包含 jar 之容器和儲存體帳戶的 WASB 位址。 例如: wasbs://libs@mystorage.blob.core.windows.net/

    注意

    針對 Apache Spark 2.1,請使用此 Bash 指令碼 URI:https://hdiconfigactions.blob.core.windows.net/linuxsetupcustomhivelibsv01/setup-customhivelibs-v00.sh

  4. 繼續如在 Linux 上佈建 HDInsight 叢集中所述佈建叢集。

叢集建立完成後,您就能夠從 Hive 使用透過此指令碼新增的 jar,而不需使用 ADD JAR 陳述式。

下一步

如需使用 Hive 的詳細資訊,請參閱 搭配使用 Apache Hive 與 HDInsight