操作說明:從 Microsoft Fabric (預覽版) 存取 Lakehouse 和筆記本中鏡像的 Azure Cosmos DB 資料
在本指南中,您將了解如何從 Microsoft Fabric (預覽版) 存取 Lakehouse 和筆記本中鏡像的 Azure Cosmos DB 資料庫。
重要
Azure Cosmos DB 的鏡像功能目前為預覽版。 預覽期間不支援生產工作負載。 目前僅支援 Azure Cosmos DB for NoSQL 帳戶。
必要條件
- 現有的 Azure Cosmos DB for NoSQL 帳戶。
- 如果您沒有 Azure 訂用帳戶,可以免費試用 Azure Cosmos DB for NoSQL。
- 如果您有現有的 Azure 訂用帳戶,請建立新的 Azure Cosmos DB for NoSQL 帳戶。
- 現有的 Fabric 容量。 如果您沒有現有的容量,請啟動 Fabric 試用版。
- 在 Fabric 租用戶或工作區中啟用鏡像。 如果尚未啟用此功能,請在您的 Fabric 租用戶中啟用鏡像。
- 必須為 Fabric 鏡像功能設定 Azure Cosmos DB for NoSQL 帳戶。 如需詳細資訊,請參閱帳戶需求。
提示
在公開預覽期間,建議您使用現有 Azure Cosmos DB 資料的測試或開發拷貝,以便從備份快速復原。
設定鏡像和必要條件
為 Azure Cosmos DB for NoSQL 資料庫設定鏡像。 如果您不確定如何設定鏡像,請參閱設定鏡像資料庫教學課程。
瀏覽至 Fabric 入口網站。
使用 Azure Cosmos DB 帳戶的認證建立新的連線和鏡像資料庫。
等候複寫完成資料的初始快照集。
存取 Lakehouse 和筆記本中的鏡像資料
使用 Lakehouse 進一步擴充可用來分析 Azure Cosmos DB for NoSQL 鏡像資料的工具數目。 在這裡,您會使用 Lakehouse 來建置 Spark 筆記本以查詢您的資料。
再次瀏覽至 Fabric 入口網站首頁。
在導覽功能表中,選取 [建立]。
選取 [建立],找到 [資料工程] 區段,然後選取 [Lakehouse]。
提供 Lakehouse 的名稱,然後選取 [建立]。
現在選取 [取得資料],然後選取 [新增捷徑]。 從捷徑選項清單中,選取 [Microsoft OneLake]。
從 Fabric 工作區的鏡像資料庫清單中,選取鏡像的 Azure Cosmos DB for NoSQL 資料庫。 選取要與 Lakehouse 搭配使用的資料表,選取 [下一步],然後選取 [建立]。
開啟 Lakehouse 中的資料表的特色選單,然後選取 [新的或現有的筆記本]。
新筆記本會自動開啟並使用
SELECT LIMIT 1000
載入資料框架。使用 Spark 執行查詢,例如
SELECT *
。df = spark.sql("SELECT * FROM Lakehouse.OrdersDB_customers LIMIT 1000") display(df)
注意
此範例假設了資料表的名稱。 撰寫 Spark 查詢時,請使用您自己的資料表。
使用 Spark 寫回
最後,您可以使用 Spark 和 Python 程式碼,將資料從 Fabric 中的筆記本寫回到來源 Azure Cosmos DB 帳戶。 您可能想要這樣做,將分析結果寫回到 Cosmos DB,然後就可以將它當做 OLTP 應用程式的服務平面使用。
在您的筆記本內建立四個程式碼資料格。
首先,查詢鏡像資料。
fMirror = spark.sql("SELECT * FROM Lakehouse1.OrdersDB_ordercatalog")
提示
這些範例程式碼區塊中的資料表名稱假設了特定的資料結構描述。 請隨意以您自己的資料表和資料行名稱取代此名稱。
現在轉換和彙總資料。
dfCDB = dfMirror.filter(dfMirror.categoryId.isNotNull()).groupBy("categoryId").agg(max("price").alias("max_price"), max("id").alias("id"))
接下來,設定 Spark 以使用您的認證、資料庫名稱和容器名稱,回寫至您的 Azure Cosmos DB for NoSQL 帳戶。
writeConfig = { "spark.cosmos.accountEndpoint" : "https://xxxx.documents.azure.com:443/", "spark.cosmos.accountKey" : "xxxx", "spark.cosmos.database" : "xxxx", "spark.cosmos.container" : "xxxx" }
最後,使用 Spark 回寫至來源資料庫。
dfCDB.write.mode("APPEND").format("cosmos.oltp").options(**writeConfig).save()
執行所有程式碼資料格。
重要
將作業寫入至 Azure Cosmos DB 將會取用要求單位 (RU)。