使用 Azure 入口網站,在 Azure 虛擬網路中使用 Azure Data Factory 的 Hive 活動轉換資料

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

在本教學課程中,您會使用 Azure 入口網站建立 Data Factory 管線,以在 Azure 虛擬網路 (VNet) 中的 HDInsight 叢集上,使用 Hive 活動來轉換資料。 您會在本教學課程中執行下列步驟:

  • 建立資料處理站。
  • 建立自我裝載整合執行階段
  • 建立 Azure 儲存體和 Azure HDInsight 連結服務
  • 建立具有 Hive 活動的管線。
  • 觸發管線執行。
  • 監視管道執行
  • 驗證輸出

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

必要條件

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

  • Azure 儲存體帳戶。 您會建立 hive 指令碼,並上傳至 Azure 儲存體。 Hive 指令碼的輸出會儲存在此儲存體帳戶中。 在此範例中,HDInsight 叢集會使用此 Azure 儲存體帳戶作為主要儲存體。

  • Azure 虛擬網路。 如果您沒有 Azure 虛擬網路,請依照這些指示建立。 在此範例中,HDInsight 在 Azure 虛擬網路中。 以下是 Azure 虛擬網路的設定範例。

    Create virtual network

  • HDInsight 叢集。 請遵循這篇文章來建立 HDInsight 叢集,並將它加入您在上一個步驟中建立的虛擬網路:使用 Azure 虛擬網路延伸 Azure HDInsight。 以下是虛擬網路中的 HDInsight 設定範例。

    HDInsight in a virtual network

  • Azure PowerShell。 遵循如何安裝並設定 Azure PowerShell 中的指示。

  • 虛擬機器。 建立 Azure 虛擬機器,並將它加入您 HDInsight 叢集所在的相同虛擬網路。 如需詳細資訊,請參閱如何建立虛擬機器

將 Hive 指令碼上傳至 Blob 儲存體帳戶

  1. 使用下列內容建立名為 hivescript.hql 的 Hive SQL 檔案:

    DROP TABLE IF EXISTS HiveSampleOut; 
    CREATE EXTERNAL TABLE HiveSampleOut (clientid string, market string, devicemodel string, state string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' 
    STORED AS TEXTFILE LOCATION '${hiveconf:Output}';
    
    INSERT OVERWRITE TABLE HiveSampleOut
    Select 
        clientid,
        market,
        devicemodel,
        state
    FROM hivesampletable
    
  2. 在 Azure Blob 儲存體中,建立名為 adftutorial 的容器 (如果不存在)。

  3. 建立名為 hivescripts 的資料夾。

  4. hivescript.hql 檔案上傳至 hivescripts 子資料夾。

建立資料處理站

  1. 若您尚未建立資料處理站,請遵循快速入門:使用 Azure 入口網站和 Azure Data Factory Studio 建立資料處理站中的步驟加以建立。 建立後,請瀏覽至 Azure 入口網站中的資料處理站。

    Screenshot of home page for the Azure Data Factory, with the Open Azure Data Factory Studio tile.

  2. 在 [開啟 Azure Data Factory Studio] 圖格上選取 [開啟],在不同的索引標籤中啟動資料整合應用程式。

建立自我裝載整合執行階段

由於 Hadoop 叢集在虛擬網路內,您必須在相同虛擬網路中安裝自我裝載的整合執行階段 (IR)。 在本節中,您會建立新的虛擬機器、將它加入相同的虛擬網路,並在上面安裝自我裝載的 IR。 自我裝載的 IR 讓 Data Factory 服務可以將處理要求分派給計算服務,像是虛擬網路內的 HDInsight。 也可以讓您在虛擬網路內的資料存放區和 Azure 之間移動資料。 如果資料存放區或計算是在內部部署環境中,也是使用自我裝載的 IR。

  1. 在 Azure Data Factory 使用者介面中,按一下視窗底部的 [連線],切換至 [Integration Runtimes] 索引標籤,然後按一下工具列上的 [+ 新增] 按鈕。

    New integration runtime menu

  2. 在 [Integration Runtime 設定] 視窗中,選取 [執行資料移動,並分派活動到外部計算] 選項,然後按一下 [下一步]

    Select perform data movement and dispatch activities option

  3. 選取 [私人網路],然後按 [下一步]

    Select private network

  4. 輸入 MySelfHostedIR 作為 [名稱],然後按一下 [下一步]

    Specify integration runtime name

  5. 按一下 [複製] 按鈕以複製整合執行階段的驗證金鑰,並加以儲存。 視窗保持開啟。 您需使用這個金鑰在虛擬機器註冊已安裝的 IR。

    Copy authentication key

在虛擬機器上安裝 IR

  1. 在 Azure VM 上,下載自我裝載整合執行階段。 使用上一個步驟取得的驗證金鑰,手動註冊自我裝載整合執行階段。

    Register integration runtime

  2. 自我裝載整合執行階段註冊成功時,您會看到下列訊息。

    Registered successfully

  3. 按一下 [啟動設定管理員]。 當節點已連線至雲端服務時,您會看到下列頁面:

    Node is connected

Azure Data Factory 使用者介面中的自我裝載 IR

  1. Azure Data Factory 使用者介面中,您應該會看到自我裝載虛擬機器的名稱及其狀態。

    Existing self-hosted nodes

  2. 按一下 [完成] 關閉 [整合執行階段設定] 視窗。 您會在整合執行階段的清單中看到自我裝載 IR。

    Self-hosted IR in the list

建立連結服務

在本節中,您會撰寫和部署兩個連結服務:

  • 將 Azure 儲存體帳戶連結至資料處理站的 Azure 儲存體連結服務。 此儲存體是您的 HDInsight 叢集使用的主要儲存體。 在此案例中,您也會使用此 Azure 儲存體帳戶來存放 Hive 指令碼和指令碼的輸出。
  • HDInsight 連結服務。 Azure Data Factory 會將 Hive 指令碼提交到此 HDInsight 叢集來執行。

建立 Azure 儲存體連結服務

  1. 切換至 [連結服務] 索引標籤,然後按一下 [ 新增]

    New linked service button

  2. 在 [新增連結服務] 視窗中,選取 [Azure Blob 儲存體],然後按一下 [繼續]

    Select Azure Blob Storage

  3. 在 [新增連結服務] 視窗中,執行下列步驟:

    1. 輸入 AzureStorageLinkedService 作為 [名稱]

    2. 在 [透過整合執行階段連線] 選取 [MySelfHostedIR]

    3. 針對 [儲存體帳戶名稱] 選取您的 Azure 儲存體帳戶。

    4. 若要測試與儲存體帳戶的連線,按一下 [測試連線]

    5. 按一下 [檔案] 。

      Specify Azure Blob Storage account

建立 HDInsight 連結服務

  1. 再次按一下 [新增] 以建立另一個連結服務。

    New linked service button

  2. 切換至 [計算] 索引標籤,選取 [Azure HDInsight],然後按一下 [繼續]

    Select Azure HDInsight

  3. 在 [新增連結服務] 視窗中,執行下列步驟:

    1. 輸入 AzureHDInsightLinkedService 作為 [名稱]

    2. 選取 [使用您自己的 HDInsight]

    3. 選取您的 HDInsight 叢集作為 [Hdi 叢集]

    4. 輸入 HDInsight 叢集的 [使用者名稱]

    5. 輸入使用者的 [密碼]

      Azure HDInsight settings

本文假設您可以透過網際網路存取此叢集。 例如,您可以連線至位於 https://clustername.azurehdinsight.net 的叢集。 這個位址使用公用閘道,但如果您已使用網路安全性群組 (NSG) 或使用者定義的路由 (UDR) 來禁止從網際網路存取,則無法使用此位址。 為了讓 Data factory 能夠將作業提交至 Azure 虛擬網路中的 HDInsight 叢集,您需要設定 Azure 虛擬網路,使得 URL 可解析成 HDInsight 所使用之閘道的私人 IP 位址。

  1. 從 Azure 入口網站,開啟 HDInsight 所在的虛擬網路。 開啟名稱開頭為 nic-gateway-0 的網路介面。 記下其私人 IP 位址。 例如,10.6.0.15。

  2. 如果您的 Azure 虛擬網路有 DNS 伺服器,請更新 DNS 記錄,以便 HDInsight 叢集 URL https://<clustername>.azurehdinsight.net 可解析成 10.6.0.15。 如果您的 Azure 虛擬網路中沒有 DNS 伺服器,您可以在所有已註冊為自我裝載整合執行階段節點的虛擬機器中編輯主機檔案 (C:\Windows\System32\drivers\etc),在檔案中新增類似以下項目來暫時解決問題:

    10.6.0.15 myHDIClusterName.azurehdinsight.net

建立新管線

在此步驟中,您會建立具有 Hive 活動的新管道。 此活動會執行 Hive 指令碼,以傳回範例資料表的資料,並儲存到您定義的路徑。

請注意下列幾點:

  • scriptPath 指向您用於 MyStorageLinkedService 的 Azure 儲存體帳戶上的 Hive 指令碼路徑。 路徑會區分大小寫。
  • Output 是 Hive 指令碼中使用的引數。 請使用 wasbs://<Container>@<StorageAccount>.blob.core.windows.net/outputfolder/ 格式,以指向您的 Azure 儲存體上現有的資料夾。 路徑會區分大小寫。
  1. 在 Data Factory 使用者介面中,按一下左窗格中的 [+] \(加號),然後按一下 [管線]

    New pipeline menu

  2. 在 [活動] 工具箱中展開 [HDInsight],並將 [Hive] 活動拖放至管線設計工具介面。

    drag-drop Hive activity

  3. 在 [屬性] 視窗中,切換至[HDI 叢集] 索引標籤,選取 [AzureHDInsightLinkedService] 作為 [HDInsight 連結服務]

    Select HDInsight linked service

  4. 切換至 [指令碼] 索引標籤,執行下列步驟:

    1. 選取 [AzureStorageLinkedService] 作為 [指令碼連結服務]

    2. 在 [檔案路徑],按一下 [瀏覽儲存體]

      Browse storage

    3. 在 [選擇檔案或資料夾] 視窗中,瀏覽至 adftutorial 容器的 hivescripts 資料夾,選取 hivescript.hql,然後按一下 [完成]

      Choose a file or folder

    4. 確認您在 [檔案路徑] 看到 adftutorial/hivescripts/hivescript.hql

      Script settings

    5. 在 [指令碼] 索引標籤中,展開 [進階] 區段。

    6. 針對 [參數],按一下 [從指令碼自動填滿]

    7. 以下列格式輸入 Output 參數的值:wasbs://<Blob Container>@<StorageAccount>.blob.core.windows.net/outputfolder/。 例如: wasbs://adftutorial@mystorageaccount.blob.core.windows.net/outputfolder/

      Script arguments

  5. 若要將成品發佈至 Data Factory,按一下 [發佈]

    Screenshot shows the option to publish to a Data Factory.

觸發管線執行

  1. 首先,按一下工具列上的 [驗證] 按鈕驗證管線。 按一下向右箭號 (>>),關閉 [管線驗證輸出] 視窗。

    Validate pipeline

  2. 若要觸發管線執行,按一下工具列上的 [觸發程序],然後按一下 [立即觸發]。

    Trigger now

監視管道執行

  1. 切換至左側的 [監視] 索引標籤。 您會在 [管線執行] 清單中看到管線執行。

    Monitor pipeline runs

  2. 若要重新整理清單,按一下 [重新整理]

  3. 若要檢視與此管線執行相關聯的活動執行,按一下 [動作] 資料行中的 [檢視活動執行]。 其他動作連結可停止/重新執行管線。

    View activity runs

  4. 您只會看到一個活動執行,因為 HDInsightHive 類型的管線中只有一個活動。 若要切換回前一個檢視,按一下頂端的 [管線] 連結。

    Activity runs

  5. 確認您在 adftutorial 容器的 outputfolder 中看到輸出檔案。

    Output file

在本教學課程中,您已執行下列步驟:

  • 建立資料處理站。
  • 建立自我裝載整合執行階段
  • 建立 Azure 儲存體和 Azure HDInsight 連結服務
  • 建立具有 Hive 活動的管線。
  • 觸發管線執行。
  • 監視管道執行
  • 驗證輸出

進入下列教學課程,以了解如何在 Azure 上使用 Spark 叢集來轉換資料: