共用方式為


使用適用於 IntelliJ 的 Azure 工具組透過 SSH 對 HDInsight 叢集上的 Apache Spark 應用程式進行偵錯

本文提供的逐步指引,是關於如何使用 Azure Toolkit for IntelliJ 中的 HDInsight 工具,對 HDInsight 叢集上的應用程式進行遠端偵錯。

必要條件

建立 Spark Scala 應用程式

  1. 啟動 IntelliJ IDEA,然後選取 [建立新專案] 來開啟 [新增專案] 視窗。

  2. 選取左窗格中的 [Apache Spark/HDInsight]

  3. 選取主視窗中的 [Spark 專案與範例 (Scala)]

  4. 從 [建置工具] 下拉式清單中,選取下列其中一項:

    • Maven:建立 Scala 專案精靈支援。
    • SBT:可供管理相依性並建置 Scala 專案。

    Intellij 建立新專案 Spark。

  5. 選取 [下一步]。

  6. 在下一個 [新增專案] 視窗中,提供下列資訊:

    屬性 說明
    專案名稱 輸入名稱。 此逐步解說會使用 myApp
    專案位置 輸入所要的位置以儲存您的專案。
    專案 SDK 如果空白,選取 [新增...] 並瀏覽至您的 JDK。
    Spark 版本 建立精靈會為 Spark SDK 和 Scala SDK 整合正確的版本。 如果 Spark 叢集版本早於 2.0,請選取 [Spark 1.x] 。 否則,請選取 Spark 2.x。 此範例使用 Spark 2.3.0 (Scala 2.11.8)

    Intellij 新增項目選取 Spark 版本。

  7. 選取 [完成]。 可能需要幾分鐘的時間,專案才會變成可用。 觀看右下角的進度。

  8. 展開您的專案,然後導覽至 src>[主要]>Scala>[範例]。 按兩下 SparkCore_WasbIOTest

執行本機執行

  1. SparkCore_WasbIOTest 指令碼,以滑鼠右鍵按一下指令碼編輯器,然後選取 [執行 SparkCore_WasbIOTest] 選項以執行本機執行。

  2. 一旦本機執行完成,您會看到輸出檔案儲存至目前的專案總管資料>預設

    Intellij Project 本機執行結果。

  3. 我們的工具已在您執行本機執行和本機偵錯時自動設定預設本機執行設定。 開啟右上角的設定 [[HDInsight 上的 Spark] XXX],您可以看到 [HDInsight 上的 Apache Spark] 下已建立的 [[HDInsight 上的 Spark] XXX]。 切換至 [本機執行] 索引標籤。

    Intellij 執行偵錯組態本機執行。

    • 環境變數:如果您已將系統環境變數 HADOOP_HOME 設定為 C:\WinUtils,它可以自動偵測,不需要手動新增。
    • WinUtils.exe 位置:如果您尚未設定系統環境變數,您可以按一下此按鈕以找到位置。
    • 只要選擇兩個選項之一,macOS 和 Linux 上就不需要它們。
  4. 您也可以在執行本機執行和本機偵錯之前手動設定。 在上述螢幕擷取畫面中,選取加號 (+)。 然後,選取 [Apache Spark on HDInsight] \(HDInsight 上的 Apache Spark\) 選項。 輸入 [名稱] 的資訊、要儲存的主要類別名稱,然後按一下本機執行按鈕。

執行本機偵錯

  1. 開啟 SparkCore_wasbloTest 指令碼,設定中斷點。

  2. 以滑鼠右鍵按一下指令碼編輯器,然後選取 [偵錯 '[Spark 作業]XXX'] 選項以執行本機偵錯。

執行遠端執行

  1. 瀏覽至 [執行] > [編輯組態...]。從這個功能表中,您可以建立或編輯遠端偵錯的設定。

  2. 在 [執行/偵錯組態] 對話方塊中,選取加號 (+)。 然後,選取 [Apache Spark on HDInsight] \(HDInsight 上的 Apache Spark\) 選項。

    Intellij 新增組態。

  3. 切換至 [在叢集中遠端執行] 索引標籤。輸入 [Name] \(名稱\)[Spark cluster] \(Spark 叢集\) 和 [Main class name] \(主要類別名稱\)。 然後按一下 [進階設定 (遠端偵錯)]。 我們的工具支援使用執行程式進行偵錯。 numExecutors,預設值為 5。 您最好不要設定高於 3。

    Intellij 執行偵錯組態。

  4. 在 [進階設定 (遠端偵錯)] 元件中,選取 [啟用 Spark 遠端偵錯]。 輸入 SSH 使用者名稱,然後輸入密碼或使用私密金鑰檔案。 如果您想要執行遠端偵錯,您需要設定它。 如果您只想要使用遠端執行,則不需要設定它。

    Intellij 進階設定可啟用 Spark 遠端偵錯。

  5. 設定現在會使用您提供的名稱儲存。 若要檢視設定詳細資訊,請選取設定名稱。 若要進行變更,請選取 [Edit Configurations] \(編輯設定\)

  6. 完成組態設定之後,您可以針對遠端叢集執行專案,或執行遠端偵錯。

    Intellij 偵錯遠端 Spark 作業遠端執行按鈕。

  7. 按一下送出記錄未出現在左面板中的 [中斷連線] 按鈕。 不過,它仍在後端執行。

    Intellij偵錯遠端 Spark 作業遠端執行結果。

執行遠端偵錯

  1. 設定一個中斷點,然後按一下 [遠端偵錯] 圖示。 與遠端提交的差異是,必須設定 SSH 使用者名稱/密碼。

    Intellij偵錯遠端 Spark 作業偵錯圖示。

  2. 當程式執行觸及中斷點時,您會在 [偵錯工具] 窗格中看到一個 [驅動程式] 索引標籤和兩個 [執行程式] 索引標籤。 選取繼續程式圖示以繼續執行程式碼,然後到達下一個中斷點。 您必須切換到正確的 [執行程式] 索引標籤,才能尋找要偵錯的目標執行程式。 您可以在對應的 [主控台] 索引標籤中檢視執行記錄。

    Intellij偵錯遠端 Spark 作業偵錯索引標籤。

執行遠端偵錯和錯誤修正

  1. 設定兩個中斷點,然後選取偵錯圖示以啟動遠端偵錯程序。

  2. 程式碼會在第一個中斷點停止,然後在 [變數] 窗格中顯示參數和變數資訊。

  3. 選取繼續程式圖示以繼續。 程式碼會在第二個點停止。 正如預期,會攔截到例外狀況。

    Intellij 偵錯遠端 Spark 作業擲回錯誤。

  4. 再次選取繼續程式圖示。 [HDInsight Spark Submission] \(HDInsight Spark 提交) 視窗會顯示「作業執行失敗」錯誤。

    Intellij 偵錯遠端 Spark 作業錯誤提交。

  5. 若要使用 IntelliJ 偵錯功能動態更新變數值,請再次選取 [偵錯]。 [變數] 窗格會再次出現。

  6. 以滑鼠右鍵按一下 [Debug] \(偵錯\) 索引標籤上的目標,然後選取 [Set Value] \(設定值\)。 接下來,輸入變數的新值。 然後選取 Enter 儲存值。

    Intellij偵錯遠端 Spark 作業集值。

  7. 選取繼續程式圖示以繼續執行程式。 此時,不會攔截到任何例外狀況。 您可以看到專案成功執行而未發生任何例外狀況。

    Intellij偵錯遠端 Spark 作業,但無例外。

下一步

案例

建立及執行應用程式

工具和延伸模組

管理資源