教學課程:在 Synapse Studio 中建立 Apache Spark 作業定義

本教學課程示範如何使用 Synapse Studio 來建立 Apache Spark 作業定義,然後將其提交至無伺服器 Apache Spark 集區。

本教學課程涵蓋下列工作:

  • 建立適用於 PySpark (Python) 的 Apache Spark 作業定義
  • 建立適用於 Spark (Scala) 的 Apache Spark 作業定義
  • 建立適用於 .NET Spark (C#/F#) 的 Apache Spark 作業定義
  • 匯入 JSON 檔案以建立作業定義
  • 將 Apache Spark 作業定義檔案匯出至本機
  • 以批次作業的形式提交 Apache Spark 作業定義
  • 將 Apache Spark 作業定義新增至管線

必要條件

開始本教學課程之前,請確定您符合下列需求:

  • Azure Synapse Analytics 工作區。 如需指示,請參閱建立 Azure Synapse Analytics 工作區
  • 無伺服器 Apache Spark 集區。
  • ADLS Gen2 儲存體帳戶。 您必須是所要使用的 ADLS Gen2 檔案系統的儲存體 Blob 資料參與者。 如果您還不是,則必須手動新增權限。
  • 如果您不想要使用工作區預設儲存體,請在 Synapse Studio 中連結必要的 ADLS Gen2 儲存體帳戶。

建立適用於 PySpark (Python) 的 Apache Spark 作業定義

在本節中,您會建立適用於 PySpark (Python) 的 Apache Spark 作業定義。

  1. 開啟 Synapse Studio

  2. 您可以移至用來建立 Apache Spark 作業定義的範例檔案,下載 python.zip 的範例檔案,然後將壓縮套件解壓縮,擷取 wordcount.pyshakespeare.txt 檔案。

    範例檔案

  3. 選取 [資料] -> [已連結] -> [Azure Data Lake Storage Gen2],然後將 wordcount.pyshakespeare.txt 上傳至您的 ADLS Gen2 檔案系統。

    上傳 Python 檔案

  4. 選取 [開發] 中樞,再選取 [+] 圖示,然後選取 [Spark 作業定義] 以建立新的 Spark 作業定義。

    建立 Python 的新定義

  5. 從 Apache Spark 作業定義主視窗的 [語言] 下拉式清單中,選取 [PySpark (Python)]。

    選取 Python

  6. 填入 Apache Spark 作業定義的資訊。

    屬性 描述
    作業定義名稱 輸入 Spark 作業定義的名稱。 此名稱可隨時更新,直到作業定義發佈出去為止。
    範例: job definition sample
    主要定義檔 用於作業的主要檔案。 從您的儲存體選取 PY 檔案。 您可以選取 [上傳檔案],以將檔案上傳至儲存體帳戶。
    範例: abfss://…/path/to/wordcount.py
    命令列引數 作業的選擇性引數。
    範例:abfss://…/path/to/shakespeare.txtabfss://…/path/to/result
    注意:範例作業定義的兩個引數是以空格分隔。
    參考檔案 主要定義檔中用來作為參考的其他檔案。 您可以選取 [上傳檔案],以將檔案上傳至儲存體帳戶。
    Spark 集區 作業將會提交至選取的 Apache Spark 集區。
    Spark 版本 Apache Spark 集區正在執行的 Apache Spark 版本。
    執行程式 要在指定 Apache Spark 集區中提供給作業使用的執行程式數目。
    執行程式大小 在指定 Apache Spark 集區中提供給作業使用的執行程式所能使用的核心和記憶體數目。
    驅動程式大小 在指定 Apache Spark 集區中提供給作業使用的驅動程式所能使用的核心和記憶體數目。
    Apache Spark 設定 新增下方屬性來自訂設定。 如果您未新增屬性,Azure Synapse 將會在適用時使用預設值。

    設定適用於 Python 的 Spark 作業定義值

  7. 選取 [發佈] 以儲存 Apache Spark 作業定義。

    發佈 py 定義

建立適用於 Apache Spark (Scala) 的 Apache Spark 作業定義

在本節中,您會建立適用於 Apache Spark (Scala) 的 Apache Spark 作業定義。

  1. 開啟 Azure Synapse Studio

  2. 您可以移至用來建立 Apache Spark 作業定義的範例檔案,下載 scala.zip 的範例檔案,然後將壓縮套件解壓縮,擷取 wordcount.jarshakespeare.txt 檔案。

    範例檔案 scala

  3. 選取 [資料] -> [已連結] -> [Azure Data Lake Storage Gen2],然後將 wordcount.jarshakespeare.txt 上傳至您的 ADLS Gen2 檔案系統。

    準備 Scala 結構

  4. 選取 [開發] 中樞,再選取 [+] 圖示,然後選取 [Spark 作業定義] 以建立新的 Spark 作業定義。 (範例影像與針對 PySpark 建立 Apache Spark 作業定義 (Python) 步驟 4 的影像相同。)

  5. 從 Apache Spark 作業定義主視窗的 [語言] 下拉式清單中,選取 [Spark (Scala)]。

    選取 scala

  6. 填入 Apache Spark 作業定義的資訊。 您可以複製範例資訊。

    屬性 描述
    作業定義名稱 輸入 Spark 作業定義的名稱。 此名稱可隨時更新,直到作業定義發佈出去為止。
    範例: scala
    主要定義檔 用於作業的主要檔案。 從您的儲存體選取 JAR 檔案。 您可以選取 [上傳檔案],以將檔案上傳至儲存體帳戶。
    範例: abfss://…/path/to/wordcount.jar
    Main class name (主要類別名稱) 主要定義檔中的完整識別碼或主要類別。
    範例: WordCount
    命令列引數 作業的選擇性引數。
    範例:abfss://…/path/to/shakespeare.txtabfss://…/path/to/result
    注意:範例作業定義的兩個引數是以空格分隔。
    參考檔案 主要定義檔中用來作為參考的其他檔案。 您可以選取 [上傳檔案],以將檔案上傳至儲存體帳戶。
    Spark 集區 作業將會提交至選取的 Apache Spark 集區。
    Spark 版本 Apache Spark 集區正在執行的 Apache Spark 版本。
    執行程式 要在指定 Apache Spark 集區中提供給作業使用的執行程式數目。
    執行程式大小 在指定 Apache Spark 集區中提供給作業使用的執行程式所能使用的核心和記憶體數目。
    驅動程式大小 在指定 Apache Spark 集區中提供給作業使用的驅動程式所能使用的核心和記憶體數目。
    Apache Spark 設定 新增下方屬性來自訂設定。 如果您未新增屬性,Azure Synapse 將會在適用時使用預設值。

    設定適用於 Scala 的 Spark 作業定義值

  7. 選取 [發佈] 以儲存 Apache Spark 作業定義。

    發佈 Scala 定義

建立適用於 .NET Spark (C#/F#) 的 Apache Spark 作業定義

在本節中,您會建立適用於 .NET Spark (C#/F#) 的 Apache Spark 作業定義。

  1. 開啟 Azure Synapse Studio

  2. 您可以移至用來建立 Apache Spark 作業定義的範例檔案,下載 dotnet.zip 的範例檔案,然後將壓縮套件解壓縮,擷取 wordcount.zipshakespeare.txt 檔案。

    範例 dotnet

  3. 選取 [資料] -> [已連結] -> [Azure Data Lake Storage Gen2],然後將 wordcount.zipshakespeare.txt 上傳至您的 ADLS Gen2 檔案系統。

    準備 Dotnet 結構

  4. 選取 [開發] 中樞,再選取 [+] 圖示,然後選取 [Spark 作業定義] 以建立新的 Spark 作業定義。 (範例影像與針對 PySpark 建立 Apache Spark 作業定義 (Python) 步驟 4 的影像相同。)

  5. 從 Apache Spark 作業定義主視窗的 [語言] 下拉式清單中,選取 [.NET Spark (C#/F#)]。

    選取 dotnet

  6. 填入 Apache Spark 作業定義的資訊。 您可以複製範例資訊。

    屬性 描述
    作業定義名稱 輸入 Spark 作業定義的名稱。 此名稱可隨時更新,直到作業定義發佈出去為止。
    範例: dotnet
    主要定義檔 用於作業的主要檔案。 從儲存體中選取 .NET for Apache Spark 應用程式 (亦即,主要的可執行檔、包含使用者定義函式的 DLL,以及其他必要檔案) 所在的 ZIP 檔案。 您可以選取 [上傳檔案],以將檔案上傳至儲存體帳戶。
    範例: abfss://…/path/to/wordcount.zip
    主要可執行檔 主要定義 ZIP 檔案中的主要可執行檔。
    範例: WordCount
    命令列引數 作業的選擇性引數。
    範例:abfss://…/path/to/shakespeare.txtabfss://…/path/to/result
    注意:範例作業定義的兩個引數是以空格分隔。
    參考檔案 背景工作節點為了執行主要定義 ZIP 檔案中未包含的 .NET for Apache Spark 應用程式所需的其他檔案 (亦即,相依的 jar、其他的使用者定義函式 DLL,以及其他設定檔)。 您可以選取 [上傳檔案] ,以將檔案上傳至儲存體帳戶。
    Spark 集區 作業將會提交至選取的 Apache Spark 集區。
    Spark 版本 Apache Spark 集區正在執行的 Apache Spark 版本。
    執行程式 要在指定 Apache Spark 集區中提供給作業使用的執行程式數目。
    執行程式大小 在指定 Apache Spark 集區中提供給作業使用的執行程式所能使用的核心和記憶體數目。
    驅動程式大小 在指定 Apache Spark 集區中提供給作業使用的驅動程式所能使用的核心和記憶體數目。
    Apache Spark 設定 新增下方屬性來自訂設定。 如果您未新增屬性,Azure Synapse 將會在適用時使用預設值。

    設定適用於 Dotnet 的 Spark 作業定義值

  7. 選取 [發佈] 以儲存 Apache Spark 作業定義。

    發佈 Dotnet 定義

注意

針對 Apache Spark 設定,如果 Apache Spark 設定的 Apache Spark 工作定義未執行任何特殊動作,則會在執行工作時使用預設設定。

匯入 JSON 檔案以建立 Apache Spark 作業定義

您可以從 Apache Spark 作業定義總管的 [動作] (...) 功能表中,將現有的本機 JSON 檔案匯入 Azure Synapse 工作區,以建立新的 Apache Spark 作業定義。

建立匯入定義

Spark 作業定義與 Livy API 完全相容。 您可以在本機 JSON 檔案中新增其他 Livy 屬性 (Livy Docs - REST API (apache.org) 的參數。 您也可以在 config 屬性中指定 Spark 組態相關參數,如下所示。 然後,您可以將 JSON 檔案匯入回來,為您的批次作業建立新的 Apache Spark 作業定義。 Spark 定義匯入的範例 JSON:

   {
  "targetBigDataPool": {
    "referenceName": "socdemolarge",
    "type": "BigDataPoolReference"
  },
  "requiredSparkVersion": "2.3",
  "language": "scala",
  "jobProperties": {
    "name": "robinSparkDefinitiontest",
    "file": "adl://socdemo-c14.azuredatalakestore.net/users/robinyao/wordcount.jar",
    "className": "WordCount",
    "args": [
      "adl://socdemo-c14.azuredatalakestore.net/users/robinyao/shakespeare.txt"
    ],
    "jars": [],
    "files": [],
    "conf": {
      "spark.dynamicAllocation.enabled": "false",
      "spark.dynamicAllocation.minExecutors": "2",
      "spark.dynamicAllocation.maxExecutors": "2"
    },
    "numExecutors": 2,
    "executorCores": 8,
    "executorMemory": "24g",
    "driverCores": 8,
    "driverMemory": "24g"
  }
}

其他 Livy 屬性

匯出現有的 Apache Spark 作業定義檔案

您可以從檔案總管的 [動作] (...) 功能表,將現有的 Apache Spark 作業定義檔案匯出至本機。 您可以進一步更新 JSON 檔案以取得其他 Livy 屬性,並視需要將其匯入回來以建立新的作業定義。

建立匯出定義

建立匯出定義 2

以批次作業的形式提交 Apache Spark 作業定義

在建立 Apache Spark 作業定義後,您可以將其提交至 Apache Spark 集區。 請確定您是所要使用的 ADLS Gen2 檔案系統的儲存體 Blob 資料參與者。 如果您還不是,則必須手動新增權限。

案例 1:提交 Apache Spark 作業定義

  1. 選取 Apache Spark 作業定義以開啟其視窗。

    開啟要提交的 spark 作業定義

  2. 選取 [提交] 圖示將您的專案提交至選取的 Apache Spark 集區。 您可以選取 [Spark 監視 URL] 索引標籤,以查看 Apache Spark 應用程式的 LogQuery。

    選取 [提交] 按鈕以提交 Spark 作業定義

    [提交 Spark] 對話方塊

案例 2:檢視 Apache Spark 作業的執行進度

  1. 選取 [監視器],然後選取 [Apache Spark 應用程式] 選項。 您可以找到已提交的 Apache Spark 應用程式。

    檢視 Spark 應用程式

  2. 然後,選取 Apache Spark 應用程式,[SparkJobDefinition] 作業視窗隨即顯示。 您可以從這裡檢視作業的執行進度。

    檢視 Spark 應用程式 LogQuery

案例 3:檢查輸出檔案

  1. 選取 [資料] -> [已連結] -> [Azure Data Lake Storage Gen2] (hozhaobdbj),開啟先前建立的 [結果] 資料夾,您可以移至 [結果] 資料夾,並檢查是否已產生輸出。

    檢視輸出檔案

將 Apache Spark 作業定義新增至管線

在本節中,您會將 Apache Spark 作業定義新增至管線。

  1. 開啟現有的 Apache Spark 作業定義。

  2. 選取 Apache Spark 作業定義右上方的圖示,選擇 [現有的管線] 或 [新增管線]。 如需詳細資訊,您可以參考 [管線] 頁面。

    新增至 pipeline1

    新增至 pipeline2

後續步驟

接下來,您可以使用 Azure Synapse Studio 來建立 Power BI 資料集和管理 Power BI 資料。 繼續參閱將 Power BI 工作區連結至 Synapse 工作區一文,以深入了解。