将 Spark 作业定义从 Azure Synapse 迁移到 Fabric

若要将 Spark 作业定义 (SJD) 从 Azure Synapse 移动到 Fabric,有两个不同的选项:

  • 选项 1:在 Fabric 中手动创建 Spark 作业定义。
  • 选项 2:可以使用脚本从 Azure Synapse 导出 Spark 作业定义,然后使用 API 将其导入 Fabric。

有关 Spark 作业定义注意事项,请参阅 Azure Synapse Spark 和 Fabric 之间的差异

先决条件

在租户中创建一个 Fabric 工作区(如果没有)。

选项 1:手动创建 Spark 作业定义

若要从 Azure Synapse 导出 Spark 作业定义,请执行以下操作:

  1. 打开 Synapse Studio:登录到 Azure。 导航到你的 Azure Synapse 工作区,打开 Synapse Studio。
  2. 找到 Python/Scala/R Spark 作业:查找并标识要迁移的 Python/Scala/R Spark 作业定义。
  3. 导出作业定义配置
    • 在 Synapse Studio 中,打开 Spark 作业定义。
    • 导出或记下配置设置,包括脚本文件位置、依赖项、参数以及任何其他相关详细信息。

若要基于 Fabric 中导出的 SJD 信息创建新的 Spark 作业定义 (SJD):

  1. 访问 Fabric 工作区:登录到 Fabric 并访问你的工作区。
  2. 在 Fabric 中创建新的 Spark 作业定义
    • 在 Fabric 中,转到“数据工程主页”。
    • 选择“Spar 作业定义”。
    • 使用从 Synapse 导出的信息配置作业,包括脚本位置、依赖项、参数和群集设置。
  3. 适应和测试:根据 Fabric 环境对脚本或配置进行任何必要的适应。 在 Fabric 中测试作业,确保作业正常运行。

显示创建 Spark 作业定义的屏幕截图。

创建 Spark 作业定义后,验证依赖项:

  • 确保使用相同的 Spark 版本。
  • 验证主定义文件是否存在。
  • 验证引用的文件、依赖项和资源是否存在。
  • 链接服务、数据源连接和装入点。

详细了解如何在 Fabric 中创建 Apache Spark 作业定义

选项 2:使用 Fabric API

按照以下关键步骤进行迁移:

  • 先决条件。
  • 步骤 1:将 Spark 作业定义从 Azure Synapse 导出到 OneLake (.json)。
  • 步骤 2:使用 Fabric API 自动将 Spark 作业定义导入 Fabric。

先决条件

先决条件包括开始将 Spark 作业定义迁移到 Fabric 之前需要考虑的操作。

  • 一个 Fabric 工作区。
  • 在工作区中创建一个 Fabric 湖屋(如果没有)。

步骤 1:从 Azure Synapse 工作区导出 Spark 作业定义

步骤 1 的重点是以 json 格式将 Spark 作业定义从 Azure Synapse 工作区导出到 OneLake。 此过程如下所述:

  • 1.1) 将 SJD 迁移笔记本导入到 Fabric 工作区。 此笔记本将所有 Spark 作业定义从给定的 Azure Synapse 工作区导出到 OneLake 中的中间目录。 Synapse API 用于导出 SJD。
  • 1.2) 在第一个命令中配置参数,以将 Spark 作业定义导出到中间存储 (OneLake)。 这只会导出 json 元数据文件。 以下代码片段用于配置源和目标参数。 请确保将它们替换为你自己的值。
# Azure config
azure_client_id = "<client_id>"
azure_tenant_id = "<tenant_id>"
azure_client_secret = "<client_secret>"

# Azure Synapse workspace config
synapse_workspace_name = "<synapse_workspace_name>"

# Fabric config
workspace_id = "<workspace_id>"
lakehouse_id = "<lakehouse_id>"
export_folder_name = f"export/{synapse_workspace_name}"
prefix = "" # this prefix is used during import {prefix}{sjd_name}

output_folder = f"abfss://{workspace_id}@onelake.dfs.fabric.microsoft.com/{lakehouse_id}/Files/{export_folder_name}"
  • 1.3) 运行导出/导入笔记本的前两个单元 ,将 Spark 作业定义元数据导出到 OneLake。 单元格完成后,将在中间输出目录下创建此文件夹结构。

显示在 OneLake 中导出 Spark 作业定义的屏幕截图。

步骤 2:将 Spark 作业定义导入 Fabric

步骤 2 将 Spark 作业定义从中间存储导入 Fabric 工作区。 此过程如下所述:

  • 2.1) 验证 1.2 中的配置,以确保指示正确的工作区和前缀来导入 Spark 作业定义。
  • 2.2) 运行导出/导入笔记本的第三个单元,以从中间位置导入所有笔记本。

注意

导出选项会输出一个 json 元数据文件。 确保可以从 Fabric 访问 Spark 作业定义可执行文件、引用文件和参数。