共用方式為


使用 Apache Spark 將數據從 Azure Cosmos DB 複製到專用 SQL 集區

適用於 Azure Cosmos DB 的 Azure Synapse Link 可讓使用者對 Azure Cosmos DB 中的作業數據執行近乎即時的分析。 不過,有時候有些數據需要匯總和擴充,才能為數據倉儲使用者提供服務。 您可以只使用筆記本中的幾個數據格來策劃和匯出 Azure Synapse Link 數據。

必要條件

步驟

在本教學課程中,您將連線到分析存放區,因此不會對交易存放區造成任何影響(它不會取用任何要求單位)。 我們將逐步執行下列步驟:

  1. 將 Azure Cosmos DB HTAP 容器讀入 Spark 數據框架
  2. 在新的數據框架中匯總結果
  3. 將數據內嵌至專用 SQL 集區

Spark 至 SQL 步驟 1

資料

在此範例中,我們使用名為 RetailSales 的 HTAP 容器。 它是名為 ConnectedData 的連結服務的一部分,且具有下列架構:

  • _rid:string (可為 Null = true)
  • _ts: long (可為 Null = true)
  • logQuantity: double (可為 Null = true)
  • productCode:string (可為 Null = true)
  • quantity: long (可為 Null = true)
  • price: long (nullable = true)
  • id:string (可為 Null = true)
  • 廣告: long (可為 Null = true)
  • storeId: long (可為 Null = true)
  • weekStarting: long (nullable = true)
  • _etag:string (可為 Null = true)

我們將依 productCodeweekStarting 匯總銷售量(數量收益 x 數量和價格 x 數量),以取得報告目的。 最後,我們會將數據匯出至稱為 dbo.productsales的專用 SQL 集區數據表。

設定 Spark Notebook

使用 Scala 作為 Spark (Scala) 作為主要語言來建立 Spark 筆記本。 我們會針對會話使用筆記本的預設設定。

讀取 Spark 中的數據

使用 Spark 將 Azure Cosmos DB HTAP 容器讀入第一個數據格中的數據框架。

val df_olap = spark.read.format("cosmos.olap").
    option("spark.synapse.linkedService", "ConnectedData").
    option("spark.cosmos.container", "RetailSales").
    load()

在新的數據框架中匯總結果

在第二個數據格中,我們會先執行新數據框架所需的轉換和匯總,再將它載入專用SQL集區資料庫。

// Select relevant columns and create revenue
val df_olap_step1 = df_olap.select("productCode","weekStarting","quantity","price").withColumn("revenue",col("quantity")*col("price"))
//Aggregate revenue, quantity sold and avg. price by week and product ID
val df_olap_aggr = df_olap_step1.groupBy("productCode","weekStarting").agg(sum("quantity") as "Sum_quantity",sum("revenue") as "Sum_revenue").
    withColumn("AvgPrice",col("Sum_revenue")/col("Sum_quantity"))

將結果載入專用 SQL 集區

第三個數據格中,我們會將數據載入專用 SQL 集區。 它會自動建立暫存的外部數據表、外部數據源和外部檔格式,一旦作業完成,就會刪除該格式。

df_olap_aggr.write.sqlanalytics("userpool.dbo.productsales", Constants.INTERNAL)

使用 SQL 查詢結果

您可以使用簡單的 SQL 查詢來查詢結果,例如下列 SQL 文稿:

SELECT  [productCode]
,[weekStarting]
,[Sum_quantity]
,[Sum_revenue]
,[AvgPrice]
 FROM [dbo].[productsales]

您的查詢會在圖表模式中呈現下列結果: Spark 至 SQL 步驟 2

下一步