教程:使用 Azure Cosmos DB 终结点实现 Azure Databricks

本教程介绍如何使用针对 Azure Cosmos DB 启用的服务终结点实现 VNet 注入的 Databricks 环境。

本教程介绍如何执行下列操作:

  • 在虚拟网络中创建 Azure Databricks 工作区
  • 创建 Azure Cosmos DB 服务终结点
  • 创建 Azure Cosmos DB 帐户并导入数据
  • 创建 Azure Databricks 群集
  • 从 Azure Databricks 笔记本查询 Azure Cosmos DB

先决条件

开始之前,请执行以下操作:

创建 Azure Cosmos DB 服务终结点

  1. 将 Azure Databricks 工作区部署到虚拟网络后,导航到 Azure 门户中的虚拟网络。 请注意通过 Databricks 部署创建的公共和私有子网。

  2. 选择“public-subnet”并创建 Azure Cosmos DB 服务终结点。 然后“保存”。

    Add a Cosmos DB service endpoint

创建 Azure Cosmos DB 帐户

  1. 打开 Azure 门户。 在屏幕的左上方,选择创建资源>数据库>Azure Cosmos DB

  2. 使用以下设置填写“基础知识”选项卡上的实例详细信息 :

    设置
    订阅 用户的订阅
    资源组 你的资源组
    帐户名 db-vnet-service-endpoint
    API Core (SQL)
    位置 中国东部 2
    异地冗余 禁用
    多区域写入 启用

    Add Cosmos DB basic account information

  3. 选择“网络”选项卡并配置虚拟网络。

    a. 选择创建的虚拟网络作为先决条件,然后选择“public-subnet”。 请注意,“private-subnet”包含一条“缺少 AzureCosmosDB 终结点”的注释。 这是因为你仅在“public-subnet”上启用了 Azure Cosmos DB 服务终结点。

    b. 请确保已启用“允许从 Azure 门户访问”。 通过该设置可从 Azure 门户访问 Azure Cosmos DB 帐户。 如果此选项设置为“拒绝”,则在尝试访问帐户时将收到错误。

    注意

    本教程没有必要这样做,但是如果希望能够从本地计算机访问 Azure Cosmos DB 帐户,还可以启用“允许从我的 IP 进行访问”。 例如,若使用 Azure Cosmos DB SDK 连接到帐户,则需启用此设置。 如果禁用该设置,将收到“拒绝访问”错误。

    Cosmos DB Account network settings

  4. 选择“查看 + 创建”,然后选择“创建”可在虚拟网络中创建 Azure Cosmos DB 帐户。

  5. 创建 Azure Cosmos DB 帐户后,请导航至“设置”下的“密钥”。 复制主连接字符串并将其保存在文本编辑器中以供以后使用。

    Cosmos DB account keys page

  6. 选择“数据资源管理器”和“新容器”,将新数据库和容器添加到 Azure Cosmos DB 帐户中。

    Cosmos DB new collection

将数据上传到 Azure Cosmos DB

  1. 打开 Azure Cosmos DB 的数据迁移工具的图形界面版本:Dtui.exe。

    Cosmos DB Data Migration Tool

  2. 在“源信息”选项卡上,从下拉列表的导入中选择 CSV 文件 。 然后选择“添加文件”并添加所下载的 storm 数据 CSV 作为先决条件。

    Cosmos DB Data Migration Tool source information

  3. 在“目标信息”选项卡上,输入连接字符串。 连接字符串格式为 AccountEndpoint=<URL>;AccountKey=<key>;Database=<database>。 AccountEndpoint 和 AccountKey 包含在上一节保存的主连接字符串中。 将 Database=<your database name> 附加到连接字符串的末尾,然后选择“验证”。 然后,添加容器名称和分区键。

    Cosmos DB Data Migration Tool target information

  4. 选择“下一步”,直到看到“摘要”页。 然后,选择“导入”。

创建群集并添加库

  1. Azure 门户中导航到 Azure Databricks 服务,然后选择“启动工作区”。

  2. 创建新群集。 选择群集名称并接受其余的默认设置。

    New cluster settings

  3. 创建群集后,请导航到群集页并选择“库”选项卡。选择“安装新库”并上传 Spark 连接器 jar 文件以安装库。

    Install Spark connector library

    可验证库是否已安装在“库”选项卡上。

    Databricks cluster Libraries tab

从 Databricks 笔记本查询 Azure Cosmos DB

  1. 导航到 Azure Databricks 工作区并创建一个新的 python 笔记本。

    Create new Databricks notebook

  2. 运行以下 python 代码以设置 Azure Cosmos DB 连接配置。 相应地更改“终结点”、“主密钥”、“数据库”和“容器” 。

    connectionConfig = {
      "Endpoint" : "https://<your Azure Cosmos DB account name.documents.azure.cn:443/",
      "Masterkey" : "<your Azure Cosmos DB primary key>",
      "Database" : "<your database name>",
      "preferredRegions" : "China East 2",
      "Container": "<your container name>",
      "schema_samplesize" : "1000",
      "query_pagesize" : "200000",
      "query_custom" : "SELECT * FROM c"
    }
    
  3. 使用以下 python 代码加载数据并创建临时视图。

    users = spark.read.format("com.microsoft.azure.cosmosdb.spark").options(**connectionConfig).load()
    users.createOrReplaceTempView("storm")
    
  4. 使用以下 magic 命令执行返回数据的 SQL 语句。

    %sql
    select * from storm
    

    已成功将 VNet 注入的 Databricks 工作区连接到启用服务终结点的 Azure Cosmos DB 资源。 要了解有关如何连接到 Azure Cosmos DB 的详细信息,请参阅适用于 Apache Spark 的 Azure Cosmos DB 连接器

清理资源

若不再需要资源组、Azure Databricks 工作区以及所有相关资源,请将其删除。 删除作业可避免产生不必要的计费。 若计划将来使用 Azure Databricks 工作区,则可停止群集并在以后重启。 如果不打算继续使用此 Azure Databricks 工作区,请使用以下步骤删除在本教程中创建的所有资源:

  1. 在 Azure 门户的左侧菜单中,单击“资源组”,并单击所创建的资源的名称。

  2. 在资源组页上选择“删除”,在文本框中键入要删除的资源的名称,然后再次选择“删除” 。

后续步骤

在本教程中,你已将 Azure Databricks 工作区部署到虚拟网络,并使用了 Azure Cosmos DB Spark 连接器在 Databricks 中查询 Azure Cosmos DB 数据。 若要了解有关在虚拟网络中使用 Azure Databricks 的详细信息,请继续阅读有关在 Azure Databricks 中使用 SQL Server 的教程。