共用方式為


使用 Apache Spark 進行分析

在本教學課程中,您將了解使用適用於 Azure Synapse 的 Apache Spark 來載入和分析資料的基本步驟。

建立無伺服器 Apache Spark 集區

  1. 在 Synapse Studio 的左側窗格中,選取 [管理]>[Apache Spark 集區]。
  2. 選取 [新增]
  3. 針對 [Apache Spark 集區名稱],輸入 Spark1
  4. 針對 [節點大小],輸入 Small
  5. 針對 [節點數目],將最小值和最大值都設定為 3
  6. 選取 [檢閱+建立]>[建立]。 您的 Apache Spark 集區會在幾秒內準備就緒。

瞭解無伺服器 Apache Spark 集區

無伺服器 Spark 集區是一種表示使用者想要使用 Spark 的方式。 當您開始使用集區時,會視需要建立 Spark 工作階段。 集區會控制該工作階段將使用的 Spark 資源數量,以及工作階段在其自動暫停之前的持續時間。 您必須針對該工作階段期間所使用的 spark 資源付費,而不是集區本身。 如此一來,Spark 集區可讓您使用 Apache Spark 而不需管理叢集。 這類似於無伺服器 SQL 集區的運作方式。

使用 Spark 集區分析 NYC 計程車資料

注意

請確定您已將樣本資料放入主要儲存體帳戶

  1. 在 Synapse Studio 中,移至 [開發] 中樞。

  2. 建立新的 Notebook。

  3. 建立新的程式碼資料格,並在該資料格中貼上下列程式碼:

    %%pyspark
    df = spark.read.load('abfss://users@contosolake.dfs.core.windows.net/NYCTripSmall.parquet', format='parquet')
    display(df.limit(10))
    
  4. 修改載入 URI,讓其根據 ABFSS URI 配置參考儲存體帳戶中的樣本檔案。

  5. 在筆記本的 [附加至] 功能表中,選擇我們稍早建立的 Spark1 無伺服器 Spark 集區。

  6. 選取資料格上的 [執行]。 Synapse 將會啟動新的 Spark 工作階段,以便在需要時執行此資料格。 如果需要新的 Spark 會話,一開始大約需要 2 到 5 分鐘的時間才能建立。 建立會話之後,資料格的執行大約需要 2 秒的時間。

  7. 如果您只想要查看資料框架的結構描述,請使用下列程式碼來執行資料格:

    %%pyspark
    df.printSchema()
    

將 NYC 計程車資料載入 Spark nyctaxi 資料庫

您可以透過名為 df 的資料框架來取得資料。 將其載入名為 nyctaxi 的 Spark 資料庫。

  1. 將新的程式碼資料格新增至筆記本,然後輸入下列程式碼:

    %%pyspark
    spark.sql("CREATE DATABASE IF NOT EXISTS nyctaxi")
    df.write.mode("overwrite").saveAsTable("nyctaxi.trip")
    

使用 Spark 和筆記本來分析 NYC 計程車資料

  1. 建立新的程式碼資料格,並輸入下列程式碼。

    %%pyspark
    df = spark.sql("SELECT * FROM nyctaxi.trip") 
    display(df)
    
  2. 執行資料格,以顯示我們載入到 nyctaxi Spark 資料庫中的 NYC 計程車資料。

  3. 建立新的程式碼資料格,並輸入下列程式碼。 我們會分析此資料,並將結果儲存至名為 nyctaxi.passengercountstats 的資料表中。

    %%pyspark
    df = spark.sql("""
       SELECT passenger_count,
           SUM(trip_distance) as SumTripDistance,
           AVG(trip_distance) as AvgTripDistance
       FROM nyctaxi.trip
       WHERE trip_distance > 0 AND passenger_count > 0
       GROUP BY passenger_count
       ORDER BY passenger_count
    """) 
    display(df)
    df.write.saveAsTable("nyctaxi.passengercountstats")
    
  4. 在資料格結果中,選取 [圖表] 可查看視覺化的資料。

下一步