共用方式為


教學課程:使用 Synapse 工作區使用 IntelliJ 建立 Apache Spark 應用程式

本教學課程說明如何使用適用於 IntelliJ 的 Azure 工具組外掛程式來開發以 Scala 撰寫的 Apache Spark 應用程式,然後直接從 IntelliJ 集成開發環境 (IDE) 將它們提交至無伺服器 Apache Spark 集區。 您可以透過幾種方式使用外掛程式:

  • 在Spark集區上開發和提交 Scala Spark 應用程式。
  • 存取 Spark 集區資源。
  • 在本機開發並執行 Scala Spark 應用程式。

在本教學課程中,您會了解如何:

  • 使用適用於 IntelliJ 的 Azure 工具元件
  • 開發 Apache Spark 應用程式
  • 將應用程式提交至 Spark 集區

必要條件

建立 Spark 集區的 Spark Scala 應用程式

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

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

  3. 從主視窗中選取 [Spark 專案與 Samples(Scala]。

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

    • 適用於 Scala 專案建立精靈的 Maven 支援。
    • 用於管理 Scala 專案的相依性和建置的 SBT

    IntelliJ IDEA New Project dialog box

  5. 選取 [下一步]。

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

    屬性 說明
    專案名稱 輸入名稱。 本教學課程使用 myApp
    專案位置 輸入想要的位置以儲存您的專案。
    專案 SDK 第一次使用 IDEA 時可能是空白的。 選取 [ 新增... ],然後瀏覽至您的 JDK。
    Spark 版本 建立精靈會整合 Spark SDK 和 Scala SDK 的適當版本。 您可以在這裏選擇所需的 Spark 版本。

    Selecting the Apache Spark SDK

  7. 選取 [完成]。 可能需要幾分鐘的時間,專案才會可供使用。

  8. Spark 專案會自動為您建立成品。 若要檢視成品,請執行下列作業:

    a. 從功能表欄,流覽至 [檔案>項目結構...]。

    b. 從 [ 項目結構] 視窗中,選取 [ 成品]。

    c. 檢視成品之後,選取 [ 取消 ]。

    Artifact info in the dialog box

  9. myApp>src>主要>Scala>範例>LogQuery 尋找 LogQuery。 本教學課程會使用 LogQuery 來執行。

    Commands for creating a Scala class from Project

連線 至 Spark 集區

登入 Azure 訂用帳戶以連線到您的 Spark 集區。

登入您的 Azure 訂用帳戶

  1. 從功能表欄,流覽至 [檢視>工具][Windows>Azure 總管]。

    IntelliJ IDEA shows Azure Explorer

  2. 在 [Azure 總管] 中 ,以滑鼠右鍵按兩下 Azure 節點,然後選取 [ 登入]。

    IntelliJ IDEA explorer right-click Azure

  3. 在 [Azure 登入] 對話框中,選擇 [裝置登入],然後選取 [登入]。

    IntelliJ IDEA Azure sign-in

  4. 在 [ Azure 裝置登入] 對話框中,選取 [ 複製與開啟]。

    IntelliJ IDEA Azure device login

  5. 在瀏覽器介面中,貼上程式代碼,然後選取 [ 下一步]。

    Microsoft enters code dialog for HDI

  6. 輸入您的 Azure 認證,然後關閉瀏覽器。

    Microsoft enters e-mail dialog for HDI

  7. 登入之後,[ 選取訂用帳戶 ] 對話框會列出與認證相關聯的所有 Azure 訂用帳戶。 選取您的訂用帳戶,然後選取 [ 選取]。

    The Select Subscriptions dialog box

  8. Azure Explorer,展開 Synapse 上的 Apache Spark,以檢視您訂用帳戶中的工作區。

    IntelliJ IDEA Azure Explorer main view

  9. 若要檢視 Spark 集區,您可以進一步展開工作區。

    Azure Explorer storage accounts

遠端在 Spark 集區上執行 Spark Scala 應用程式

建立 Scala 應用程式之後,您可以從遠端執行它。

  1. 選取圖示以開啟 [ 執行/偵錯組態 ] 視窗。

    The Submit Spark Application to HDInsight command 1

  2. 在 [ 執行/偵錯組態 ] 對話框中,選取 +,然後選取 Synapse 上的 Apache Spark。

    The Submit Spark Application to HDInsight command 2

  3. 在 [ 執行/偵錯組態 ] 視窗中,提供下列值,然後選取 [ 確定]:

    屬性
    Spark 集區 選取您要在其中執行應用程式的 Spark 集區。
    選取要提交的成品 保留預設設定。
    Main class name (主要類別名稱) 預設值是所選取檔案中的主要類別。 您可以選取省略號 ( ... ) 並選擇另一個類別來變更類別。
    作業組態 您可以變更預設索引鍵和值。 如需詳細資訊,請參閱 Apache Livy REST API
    命令列引數 如有需要,您可以輸入以空格分隔的主類別自變數。
    參考的 Jar 和參考的檔案 如果有的話,您可以輸入所參考 Jar 和檔案的路徑。 您也可以流覽 Azure 虛擬檔案系統中的檔案,其目前僅支援 ADLS Gen2 叢集。 如需詳細資訊: Apache Spark 組態如何將資源上傳至叢集
    作業上傳 儲存體 展開以顯示其他選項。
    儲存區類型 選取 [使用 Azure Blob 上傳 ] 或 [使用叢集預設記憶體帳戶從下拉式清單上傳 ]。
    儲存體帳戶 輸入您的記憶體帳戶。
    儲存體金鑰 輸入您的記憶體金鑰。
    儲存體 容器 一旦 儲存體 帳戶輸入 儲存體 金鑰,請從下拉式清單中選取您的記憶體容器。

    The Spark Submission dialog box 1

  4. 選取 SparkJobRun 圖示,將您的專案提交至選取的 Spark 集區。 [Remote Spark Job in Cluster] \(叢集中的遠端 Spark 作業\) 索引標籤在底部顯示作業執行進度。 您可以選取紅色按鈕來停止應用程式。

    Apache Spark Submission window

    The Spark Submission dialog box 2

本機執行/偵錯 Apache Spark 應用程式

您可以依照下列指示來設定 Apache Spark 作業的本機執行和本機偵錯。

案例 1:執行本機執行

  1. 開啟 [ 執行/偵錯組態 ] 對話框,選取加號 (+)。 然後選取 Synapse 上的 Apache Spark 選項。 輸入要儲存的名稱主要類別名稱的資訊。

    Intellij Run debug configurations local run 1

    • 環境變數和 WinUtils.exe 位置僅適用於 Windows 使用者。
    • 環境變數:如果您之前已設定系統環境變數,且不需要手動新增,則可以自動偵測系統環境變數。
    • WinUtils.exe 位置:您可以選取右側的資料夾圖示來指定 WinUtils 位置。
  2. 然後選取 [本機播放] 按鈕。

    Intellij Run debug configurations local run 2

  3. 本機執行完成後,如果文本包含輸出,您可以檢查數據>預設輸出檔案。

    Intellij Project local run result 1

案例 2:進行本機偵錯

  1. 開啟 LogQuery 腳本,設定斷點。

  2. 選取 [ 本機偵錯 ] 圖示以執行本機偵錯。

    Intellij Project local run result 2

存取和管理 Synapse 工作區

您可以在 Azure Toolkit for IntelliJ 內的 Azure Explorer 中執行不同的作業。 從功能表欄,流覽至 [檢視>工具][Windows>Azure 總管]。

啟動工作區

  1. 從 Azure Explorer 瀏覽至 Synapse 上的 Apache Spark,然後展開它。

    IntelliJ IDEA Azure Explorer main view

  2. 以滑鼠右鍵按兩下工作區,然後選取 [ 啟動工作區],將會開啟網站。

    Spark Job View Application details 1

    Spark Job View Application details 2

Spark 控制台

您可以執行 Spark 本機主控台 (Scala) 或執行 Spark Livy 互動式工作階段主控台 (Scala)。

Spark 本機主控台 (Scala)

請確定您已符合 WINUTILS.EXE 必要條件。

  1. 從功能表列,瀏覽至 [Run] \(執行\)>[Edit Configurations] \(編輯設定\)。

  2. 從 [執行/偵錯組態] 視窗的左窗格中,流覽至 Synapse[Synapse> 上的 Spark] myApp 上的 Apache Spark。

  3. 在主視窗中,選取 [Locally Run] \(在本機執行\) 索引標籤。

  4. 提供下列值,然後選取 [OK] \(確定\):

    屬性
    環境變數 請確定 HADOOP_HOME 的值是正確的。
    WINUTILS.exe 位置 請確定路徑是正確的。

    Local Console Set Configuration

  5. 在 [Project] \(專案\) 中,瀏覽至 [myApp] >[src] >[main] >[scala] >[myApp] 。

  6. 從功能表欄,流覽至 [工具>Spark 控制台>][執行Spark 本機控制台][Scala]。

  7. 然後可能會出現兩個對話方塊,詢問您是否要自動修正相依性。 如果需要,請選取 [Auto Fix] \(自動修正\)。

    IntelliJ IDEA Spark Auto Fix dialog1

    IntelliJ IDEA Spark Auto Fix dialog2

  8. 主控台看起來應該類似下面的圖片。 在主控台視窗中,輸入 sc.appName,然後按 Ctrl+Enter。 系統將會顯示結果。 您可以選取紅色按鈕來停止本機控制台。

    IntelliJ IDEA local console result

Spark Livy 互動式會話控制台 (Scala)

僅支援 IntelliJ 2018.2 和 2018.3。

  1. 從功能表列,瀏覽至 [Run] \(執行\)>[Edit Configurations] \(編輯設定\)。

  2. 從 [執行/偵錯組態] 視窗的左窗格中,流覽至 synapse[synapse> 上的 Spark] myApp 上的 Apache Spark。

  3. 在主視窗中,選取 [Remotely Run in Cluster] \(在叢集中遠端執行\) 索引標籤。

  4. 提供下列值,然後選取 [OK] \(確定\):

    屬性
    Main class name (主要類別名稱) 選取 Main 類別名稱。
    Spark 集區 選取您要在其中執行應用程式的 Spark 集區。

    Interactive Console Set Configuration

  5. 在 [Project] \(專案\) 中,瀏覽至 [myApp] >[src] >[main] >[scala] >[myApp] 。

  6. 從功能表欄,流覽至 [工具>Spark 控制台>執行Spark Livy 互動式會話控制台][Scala]。

  7. 主控台看起來應該類似下面的圖片。 在主控台視窗中,輸入 sc.appName,然後按 Ctrl+Enter。 系統將會顯示結果。 您可以選取紅色按鈕來停止本機控制台。

    IntelliJ IDEA Interactive Console Result

將選取專案傳送至 Spark 控制台

您可能會想要透過將某些程式代碼傳送至本機控制台或 Livy 互動式工作階段主控台(Scala)來查看腳本結果。 若要這樣做,您可以在 Scala 檔案中反白顯示某些程式代碼,然後按下滑鼠右鍵 [傳送選取專案至 Spark] 控制台。 選取的程式代碼將會傳送至主控台並完成。 結果會在主控台中顯示於程式碼之後。 主控台會檢查現有的錯誤。

Send Selection to Spark console

下一步