使用管道从打开的工作区访问入站受限工作区中的 lakehouse

管道可用于在开放工作区与限制入站公共访问的工作区之间建立跨工作区通信。 例如,可以在打开的工作区中创建管道,以访问入站受限工作区中的 lakehouse。 此设置允许工作区 1 中的笔记本安全地访问 Lakehouse,并在工作区 2 中读取 Delta 表,而无需将其公开给公共访问。

步骤 1:创建工作区

需要打开的工作区和受限工作区。 在本文中,工作区称为:

  • 源工作区是没有公共访问限制的 开放 工作区,可在其中创建管道。
  • 目标工作区是具有入站公共访问限制的 受限 工作区,也是创建 Lakehouse 的位置。

若要创建工作区,请执行以下步骤:

  1. 在 Fabric 中创建两个工作区。 有关详细信息,请参阅 “创建工作区”。
  2. 在租户设置中, 启用工作区级入站访问保护
  3. 对于目标工作区, 请设置工作区级专用链接

步骤 2:在受限工作区中创建 Lakehouse

使用以下 Create Lakehouse API 在目标(受限)工作区中创建 Lakehouse:

POST https://{workspaceid}.z{xy}.w.api.fabric.microsoft.com/workspaces/{workspaceID}/lakehouses

显示创建 Lakehouse 的屏幕截图。

步骤 3:创建托管专用终结点

在源(开放)工作区中创建托管专用终结点(MPE)。 在门户或以下 API 中使用工作区设置:

POST https://{workspaceFQDN}/v1/workspaces/{workspaceID}/managedPrivateEndpoints

其中{workspaceFQDN}{workspaceID}.z{xy}.w.api.fabric.microsoft.com

例如:POST https://aaaaaaaa000011112222bbbbbbbbbbbb.zaa.w.api.fabric.microsoft.com/v1/workspaces/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb/managedPrivateEndpoints

targetPrivateLinkResourceId这是受限工作区中专用链接的资源 ID。 若要创建目标工作区的托管专用终结点,需要目标工作区的专用链接服务资源 ID。

显示创建托管专用终结点 API 的屏幕截图。

可以通过查看工作区的资源 JSON 在 Azure 中找到此资源 ID。 确保 JSON 中的工作区 ID 与目标工作区匹配。

显示如何在资源 json 文件中获取专用链接资源 ID 的屏幕截图。

工作区 2 的专用链接服务所有者需要批准 Azure 专用链接中心>挂起的连接中的托管专用终结点请求。

步骤 4:将 Delta 表上传到 Lakehouse

使用 Azure 存储资源管理器将 Delta 表文件夹上传到受限 Lakehouse 的托管存储中。

  1. 转到 Azure 存储资源管理器,选择左侧菜单中的连接图标,然后选择 ADLS Gen2 容器或目录

  2. 使用 OAuth 登录。

  3. 输入存储的显示名称,并使用以下格式输入 Blob 容器 URL:

    https://{workspaceID}.z{xy}.onelake.fabric.microsoft.com/{workspaceID}/{lakehouseID}

    其中: workspaceID 工作区 ID 不带短划线, {xy} 是工作区 ID 的前两个字符。

    显示输入连接信息的位置的屏幕截图。

  4. 选择“连接” 。 存储现在应显示在资源管理器视图中。

  5. “表” 文件夹下,上传要使用的 Delta 表。 此示例使用 客户 表。

    显示使用上传文件夹选项的位置的屏幕截图。

步骤 5:在受限工作区中创建笔记本

创建从表读取和写入新表的笔记本。 为此,请使用 UI 在打开的工作区中创建笔记本。

  1. 在打开的工作区中,使用 UI 创建具有相同表和类似笔记本的 Lakehouse。

    显示加载文件到新表页的屏幕截图。

  2. 在笔记本中连接 Lakehouse,并运行脚本以创建新表。

    显示运行用于创建新表的脚本的屏幕截图。

    df = spark("SELECT * FROM Lakehouse_Open.customers")
    display(df)
    df.write.mode("overwrite").saveAsTable("Lakehouse_Open.customersnew")
    
  3. 保存笔记本。

  4. 通过 API 检索笔记本定义并获取位置结果

    Get Notebook Definition API: GET https://{WorkspaceID w/o (-)}.zxy.w.api.fabric.microsoft.com/{WorkspaceID}/notebooks/getDefinition
    
    Get location API: GET {location}/result
    
  5. notebook-content.py 从 Base64 转换为 JSON,复制转换的内容,然后在使用受限 Lakehouse 中的值更新以下值后将其从 JSON 转换回 Base64。

  6. 使用更新的请求正文创建具有定义的笔记本。

   Create Notebook API: GET https://{WorkspaceID w/o (-)}.zxy.w.api.fabric.microsoft.com/{WorkspaceID}/notebooks

   Get location API: GET {location}/result

步骤 6:在打开工作区中创建管道

  1. 在打开的工作区中,使用 Fabric 门户或 API 创建管道。

  2. 添加笔记本活动。

  3. 在“设置”中,创建连接。

    显示“连接数据源”页的屏幕截图。

  4. 选择受限工作区。

    显示选择受限工作区的屏幕截图。

  5. 添加笔记本 ID 作为参数。

    @pipeline().parameters.notebookId

  6. 在管道参数中,输入受限工作区中的实际笔记本 ID。

    显示用于添加笔记本 ID 的位置的屏幕截图。

  7. 保存管道并复制管道 ID

步骤 7:通过 API 运行管道

  1. 使用 API 触发管道,例如使用 Bruno。

    管道运行 API 终结点的格式:

    https://{openWsIdWithoutDashes}.zxy.w.api.fabric.microsoft.com/v1/workspaces/{openWsId}/items/{pipelineId}/jobs/instances?jobType=Pipeline

    获取位置 API:GET {location}

  2. 等待运行状态完成。 可以在 Microsoft Fabric 门户中的“监视”页中检查状态。

    显示“监视”页的屏幕截图。

步骤 8:验证表创建

  1. 在受限工作区的 Lakehouse 中打开 Azure 存储资源管理器。

  2. 确认已创建新表。

  3. 使用列表表 API 获取 Lakehouse 表:

    List Tables API: GET https://{openWsIdWithoutDashes}.zxy.w.api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}/tables