本指南介绍如何从 Microsoft Fabric 访问 Lakehouse 中的镜像 Azure Cosmos DB 数据和笔记本(预览版)。
重要
Azure Cosmos DB 的镜像目前为 预览版。 预览期间不支持生产工作负荷。 目前,仅支持用于 NoSQL 帐户的 Azure Cosmos DB。
先决条件
- 一个现有的适用于 NoSQL 的 Azure Cosmos DB 帐户。
- 如果没有 Azure 订阅, 请尝试免费试用 Azure Cosmos DB for NoSQL。
- 如果有现有的 Azure 订阅, 请创建新的 Azure Cosmos DB for NoSQL 帐户。
- 现有的 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。运行查询,例如
SELECT *使用 Spark。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)。