共用方式為


在 HDInsight on AKS 中提交和管理 Apache Spark™ 叢集上的作業

注意

AKS 上的 Azure HDInsight 將於 2025 年 1 月 31 日退場。 請於 2025 年 1 月 31 日之前,將工作負載移轉至 Microsoft Fabric 或對等的 Azure 產品,以免工作負載突然終止。 訂用帳戶中剩餘的叢集將會停止,並會從主機移除。

在淘汰日期之前,只有基本支援可用。

重要

此功能目前為預覽功能。 Microsoft Azure 預覽版增補使用規定包含適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的更多法律條款。 若需此特定預覽版的相關資訊,請參閱 Azure HDInsight on AKS 預覽版資訊。 如有問題或功能建議,請在 AskHDInsight 上提交要求並附上詳細資料,並且在 Azure HDInsight 社群上追蹤我們以獲得更多更新資訊。

建立叢集之後,使用者可以使用各種介面來提交和管理作業

  • 使用 Jupyter
  • 使用 Zeppelin
  • 使用 ssh (spark-submit)

使用 Jupyter

必要條件

HDInsight on AKS 上的 Apache Spark™ 叢集。 如需詳細資訊,請參閱建立 Apache Spark 叢集

Jupyter Notebook 是支援各種程式設計語言的互動式 Notebook 環境。

建立 Jupyter Notebook

  1. 瀏覽至 [Apache Spark™ 叢集] 頁面,然後開啟 [概觀] 索引標籤。按兩下 Jupyter,這會要求您驗證並開啟 Jupyter 網頁。

    如何選取 Jupyter Notebook 的螢幕擷取畫面。

  2. 在 Jupyter 網頁中選取 [新增 > PySpark],以建立 Notebook。

    新 PySpark 頁面的螢幕擷取畫面。

    系統會建立新的 Notebook,並以 Untitled(Untitled.ipynb) 的名稱開啟。

    注意

    透過使用 PySpark 或 Python 3 核心來建立筆記本,當您執行第一個程式碼儲存格時,系統便會自動為您建立 Spark 工作階段。 您不需要明確建立工作階段。

  3. 將以下程式碼貼入 Jupyter Notebook 的空白資料格,然後按 SHIFT + ENTER 以執行此程式碼。 如需 Jupyter 上更多控件,請參閱這裡

    包含內容的 PySpark 頁面螢幕擷取畫面。

    %matplotlib inline
    import pandas as pd
    import matplotlib.pyplot as plt
    data1 = [22,40,10,50,70]
    s1 = pd.Series(data1)   #One-dimensional ndarray with axis labels (including time series).
    
    data2 = data1
    index = ['John','sam','anna','smith','ben']
    s2 = pd.Series(data2,index=index)
    
    data3 = {'John':22, 'sam':40, 'anna':10,'smith':50,'ben':70}
    s3 = pd.Series(data3)
    
    s3['jp'] = 32     #insert a new row
    s3['John'] = 88
    
    names = ['John','sam','anna','smith','ben']
    ages = [10,40,50,48,70]
    name_series = pd.Series(names)
    age_series = pd.Series(ages)
    
    data_dict = {'name':name_series, 'age':age_series}
    dframe = pd.DataFrame(data_dict)   
    #create a pandas DataFrame from dictionary
    
    dframe['age_plus_five'] = dframe['age'] + 5   
    #create a new column
    dframe.pop('age_plus_five')
    #dframe.pop('age')
    
    salary = [1000,6000,4000,8000,10000]
    salary_series = pd.Series(salary)
    new_data_dict = {'name':name_series, 'age':age_series,'salary':salary_series}
    new_dframe = pd.DataFrame(new_data_dict)
    new_dframe['average_salary'] = new_dframe['age']*90
    
    new_dframe.index = new_dframe['name']
    print(new_dframe.loc['sam'])
    
  4. 將具有薪資和年齡的圖表繪製為 X 和 Y 軸

  5. 在同一個筆記本中,將以下程式碼貼入 Jupyter Notebook 的空白資料格,然後按 SHIFT + ENTER 以執行此程式碼。

    %matplotlib inline
    import pandas as pd
    import matplotlib.pyplot as plt
    
    plt.plot(age_series,salary_series)
    plt.show()
    

    圖表輸出的螢幕擷取畫面。

儲存 Notebook

  1. 從 [Notebook] 功能表列中,瀏覽至 [檔案] > [儲存與檢查點]。

  2. 請關閉 Notebook 以釋出叢集資源:從 [Notebook] 功能表列,瀏覽至 [檔案] > [關閉並終止]。 您也可以在範例資料夾下執行任何筆記本。

    如何儲存記事簿的螢幕擷取畫面。

使用 Apache Zeppelin Notebook

在 HDInsight on AKS 中的 Apache Spark 叢集包含 Apache Zeppelin 筆記本。 使用筆記本來執行 Apache Spark 作業。 在本文中,您將學習如何在 HDInsight on AKS 叢集上使用 Zeppelin Notebook。

必要條件

HDInsight on AKS 上的 Apache Spark 叢集。 如需指示,請參閱建立 Apache Spark 叢集

啟動 Apache Zeppelin Notebook

  1. 瀏覽至 Apache Spark 叢集 [概觀] 頁面中,從 [叢集儀表板] 中選取 [Zeppelin 筆記本]。 這會提示驗證並開啟 Zeppelin 頁面。

    如何選取 Zeppelin 的螢幕擷取畫面。

  2. 建立新的 Notebook。 從標題窗格中,瀏覽至 [Notebook] > [建立新記事]。 請確定筆記本標題顯示的是已連線狀態。 右上角的綠點表示此狀態。

    如何建立 Zeppelin 筆記本的螢幕擷取畫面。

  3. 在 Zeppelin Notebook 資料格中執行下列命令:

    %livy.pyspark
    import pandas as pd
    import matplotlib.pyplot as plt
    data1 = [22,40,10,50,70]
    s1 = pd.Series(data1)   #One-dimensional ndarray with axis labels (including time series).
    
    data2 = data1
    index = ['John','sam','anna','smith','ben']
    s2 = pd.Series(data2,index=index)
    
    data3 = {'John':22, 'sam':40, 'anna':10,'smith':50,'ben':70}
    s3 = pd.Series(data3)
    
    s3['jp'] = 32     #insert a new row
    
    s3['John'] = 88
    
    names = ['John','sam','anna','smith','ben']
    ages = [10,40,50,48,70]
    name_series = pd.Series(names)
    age_series = pd.Series(ages)
    
    data_dict = {'name':name_series, 'age':age_series}
    dframe = pd.DataFrame(data_dict)   #create a pandas DataFrame from dictionary
    
    dframe['age_plus_five'] = dframe['age'] + 5   #create a new column
    dframe.pop('age_plus_five')
    #dframe.pop('age')
    
    salary = [1000,6000,4000,8000,10000]
    salary_series = pd.Series(salary)
    new_data_dict = {'name':name_series, 'age':age_series,'salary':salary_series}
    new_dframe = pd.DataFrame(new_data_dict)
    new_dframe['average_salary'] = new_dframe['age']*90
    
    new_dframe.index = new_dframe['name']
    print(new_dframe.loc['sam'])
    
  4. 選取 [執行] 按鈕讓段落執行程式碼片段。 段落右上角的狀態應該會從「準備就緒」逐一轉變成「擱置」、「執行中」及「已完成」。 輸出會顯示在同一個段落的底部。 螢幕擷取畫面如下圖所示:

    如何執行 Zeppelin 筆記本的螢幕擷取畫面。

    輸出:

    Zeppelin 筆記本輸出的螢幕擷取畫面。

使用 Spark 提交工作

  1. 使用下列命令 `#vim samplefile.py' 建立檔案

  2. 此命令會開啟 vim 檔案

  3. 將下列程式碼貼到 vim 檔案中

    import pandas as pd
    import matplotlib.pyplot as plt
    
    From pyspark.sql import SparkSession
    Spark = SparkSession.builder.master('yarn').appName('SparkSampleCode').getOrCreate()
    # Initialize spark context
    data1 = [22,40,10,50,70]
    s1 = pd.Series(data1)   #One-dimensional ndarray with axis labels (including time series).
    
    data2 = data1
    index = ['John','sam','anna','smith','ben']
    s2 = pd.Series(data2,index=index)
    
    data3 = {'John':22, 'sam':40, 'anna':10,'smith':50,'ben':70}
     s3 = pd.Series(data3)
    
    s3['jp'] = 32     #insert a new row
    
    s3['John'] = 88
    
    names = ['John','sam','anna','smith','ben']
    ages = [10,40,50,48,70]
    name_series = pd.Series(names)
    age_series = pd.Series(ages)
    
    data_dict = {'name':name_series, 'age':age_series}
    dframe = pd.DataFrame(data_dict)   #create a pandas DataFrame from dictionary
    
    dframe['age_plus_five'] = dframe['age'] + 5   #create a new column
    dframe.pop('age_plus_five')
    #dframe.pop('age')
    
    salary = [1000,6000,4000,8000,10000]
    salary_series = pd.Series(salary)
    new_data_dict = {'name':name_series, 'age':age_series,'salary':salary_series}
    new_dframe = pd.DataFrame(new_data_dict)
    new_dframe['average_salary'] = new_dframe['age']*90
    
    new_dframe.index = new_dframe['name']
    print(new_dframe.loc['sam'])
    
  4. 使用下列方式儲存檔案。

    1. 按下 [Escape] 按鈕
    2. 輸入命令 :wq
  5. 執行下列命令來執行工作。

    /spark-submit --master yarn --deploy-mode cluster <filepath>/samplefile.py

    顯示如何執行 Spark 提交作業的螢幕擷取畫面。

在 HDInsight on AKS 中的 Apache Spark 叢集上料監視查詢

Spark 歷程記錄 UI

  1. 按兩下 [概觀] 索引標籤中的 [Spark 歷程記錄伺服器 UI]。

    顯示 Spark UI 的螢幕擷取畫面。

  2. 使用相同的應用程式識別碼,從 UI 選取最近的執行。

    顯示如何執行 Spark UI 的螢幕擷取畫面。

  3. 在 Spark 歷程記錄伺服器 UI 中檢視有向非循環圖表循環和作業的階段。

    DAG 週期的螢幕擷取畫面。

Livy 工作階段 UI

  1. 若要開啟 Livy 工作階段 UI,請在瀏覽器中輸入下列命令 https://<CLUSTERNAME>.<CLUSTERPOOLNAME>.<REGION>.projecthilo.net/p/livy/ui

    如何開啟 Livy 工作階段 UI 的螢幕擷取畫面。

  2. 按兩下 [記錄] 底下的 [驅動程式] 選項,以檢視驅動程式記錄。

Yarn UI

  1. 從 [概觀] 索引標籤按兩下 [Yarn],然後開啟 Yarn UI。

    如何選取 Yarn UI 的螢幕擷取畫面。

  2. 您可以追蹤您最近由相同應用程式識別碼執行的作業。

  3. 按兩下 Yarn 中的應用程式識別碼,以檢視作業的詳細記錄。

    檢視記錄。

參考