共用方式為


如何:從 Microsoft Fabric 存取 Lakehouse 中鏡像的 Azure Cosmos DB 數據和筆記本 (預覽)

在本指南中,您將瞭解如何從 Microsoft Fabric 存取 Lakehouse 中鏡像的 Azure Cosmos DB 數據,以及從 Microsoft Fabric 存取筆記本。

重要

Azure Cosmos DB 的鏡像目前為預覽狀態。 預覽期間不支持生產工作負載。 目前僅支援適用於 NoSQL 的 Azure Cosmos DB 帳戶。

必要條件

提示

在公開預覽期間,建議您使用現有 Azure Cosmos DB 數據的測試或開發複本,以便從備份快速復原。

設定鏡像和必要條件

設定適用於 NoSQL 資料庫的 Azure Cosmos DB 鏡像。 如果您不確定如何設定鏡像,請參閱 設定鏡像資料庫教學課程

  1. 流覽至 網狀架構入口網站

  2. 使用 Azure Cosmos DB 帳戶的認證建立新的連線和鏡像資料庫。

  3. 等候複寫完成數據的初始快照集。

存取 Lakehouse 和筆記本中的鏡像數據

使用 Lakehouse 進一步擴充可用來分析適用於 NoSQL 鏡像數據的 Azure Cosmos DB 的工具數目。 在這裡,您會使用 Lakehouse 來建置 Spark 筆記本來查詢您的數據。

  1. 再次流覽至網狀架構入口網站首頁。

  2. 在導覽功能表中,選取 [ 建立]。

  3. 選取 [建立],找出 [資料工程師 ing] 區段,然後選取 [Lakehouse]。

  4. 提供 Lakehouse 的名稱,然後選取 [ 建立]。

  5. 現在選取 [取得數據],然後選取 [新增] 快捷方式。 從快捷方式選項清單中,選取 [Microsoft OneLake]。

  6. 從 Fabric 工作區中的鏡像資料庫清單中,選取適用於 NoSQL 的鏡像 Azure Cosmos DB 資料庫。 選取要與 Lakehouse 搭配使用的數據表,選取 [下一步],然後選取 [ 建立]。

  7. 開啟 Lakehouse 中數據表的操作功能表,然後選取 [ 新增] 或 [現有筆記本]。

  8. 新的筆記本會自動開啟並使用 載入數據框架 SELECT LIMIT 1000

  9. 執行查詢,例如 SELECT * 使用Spark。

    df = spark.sql("SELECT * FROM Lakehouse.OrdersDB_customers LIMIT 1000")
    display(df)
    

    Lakehouse 筆記本的螢幕快照,其中包含從鏡像資料庫預先載入的數據。

    注意

    此範例假設數據表的名稱。 撰寫 Spark 查詢時,請使用您自己的資料表。

使用Spark回寫

最後,您可以使用 Spark 和 Python 程式代碼,從 Fabric 中的筆記本將數據寫回來源 Azure Cosmos DB 帳戶。 您可能想要這樣做,將分析結果寫回 Cosmos DB,然後就可以將它當做 OLTP 應用程式的服務平面使用。

  1. 在您的筆記本內建立四個程式代碼數據格。

  2. 首先,查詢鏡像數據。

    fMirror = spark.sql("SELECT * FROM Lakehouse1.OrdersDB_ordercatalog")
    

    提示

    這些範例程式代碼區塊中的數據表名稱會假設特定數據架構。 請隨意以您自己的數據表和數據行名稱取代此專案。

  3. 現在轉換和匯總數據。

    dfCDB = dfMirror.filter(dfMirror.categoryId.isNotNull()).groupBy("categoryId").agg(max("price").alias("max_price"), max("id").alias("id"))
    
  4. 接下來,設定 Spark 以使用您的認證、資料庫名稱和容器名稱,回寫至適用於 NoSQL 的 Azure Cosmos DB 帳戶。

    writeConfig = {
      "spark.cosmos.accountEndpoint" : "https://xxxx.documents.azure.com:443/",
      "spark.cosmos.accountKey" : "xxxx",
      "spark.cosmos.database" : "xxxx",
      "spark.cosmos.container" : "xxxx"
    }
    
  5. 最後,使用Spark來回寫至源資料庫。

    dfCDB.write.mode("APPEND").format("cosmos.oltp").options(**writeConfig).save()
    
  6. 執行所有程式代碼數據格。

    重要

    將作業寫入至 Azure Cosmos DB 將會取用要求單位(RU)。