Snowpark Migration Accelerator:关于代码准备的说明¶
在运行 Snowpark Migration Accelerator (SMA) 之前,请确保所有源代码文件都位于安装 SMA 的计算机上。您无需连接到任何源数据库或 Spark 环境,因为 SMA 仅执行代码分析。
源代码必须采用可读格式,SMA 才能正确处理,因为该工具完全依赖于您提供的源代码。
提取¶
在运行 Snowpark Migration Accelerator (SMA) 之前,将所有源代码文件整理到一个主文件夹中。您可以在此主文件夹中保留现有的子文件夹结构,但是所有代码文件都必须位于这个目录下。此要求适用于:
支持以下文件类型:
GitHub 存储库(作为 ZIP 文件下载并解压缩到本地计算机)
Python 脚本文件
Scala 项目文件
Databricks 笔记本文件
Jupyter 笔记本在您的本地计算机上运行
在开始迁移之前,将所有源代码文件收集到一个主文件夹中。虽然您的源代码可能来自不同位置,但将其放在一个地方将提高迁移过程的效率。如果您已经建立了文件组织结构,请将其完整地保存在主文件夹中。
将 GitHub 存储库导出到 ZIP 文件 (https://docs.github.com/en/repositories/working-with-files/using-files/downloading-source-code-archives)
要使用 Snowpark Migration Accelerator (SMA) 生成准确、完整的报告,请仅扫描与您的迁移项目相关的代码。与其扫描所有可用代码,不如识别并仅包含计划迁移的基本代码文件。有关更多信息,请参阅 注意事项 部分中的 大小。
注意事项¶
让我们来看看哪些文件类型与 Snowpark Migration Accelerator (SMA) 兼容,并了解准备源代码以供使用 SMA 进行分析时的关键注意事项。
Filetypes(文件类型)¶
Snowpark Migration Accelerator (SMA) 会检查源目录中的所有文件,但仅处理具有特定扩展名且可能包含 Spark API 代码的文件。这包括常规代码文件和 Jupyter 笔记本。
您可以在 本文档“支持的文件类型”部分 中找到 SMA 支持的文件类型列表。
导出的文件¶
如果您的代码存储在源代码控制平台中而不是本地文件中,则需要将其导出为 SMA 可以处理的格式。以下是导出代码的方法:
对于 Databricks 用户:要使用 Snowpark Migration Accelerator (SMA),您需要将笔记本导出为 .dbc 格式。您可以在 关于导出笔记本的 Databricks 文档 (https://docs.databricks.com/en/notebooks/notebook-export-import.html#export-notebooks.) 中找到有关如何导出笔记本的详细说明。
需要帮助导出文件吗?访问 Snowflake Labs Github 存储库中的导出脚本 (https://github.com/Snowflake-Labs/SC.DDLExportScripts/tree/main),Snowflake Professional Services 在那里维护适用于 Databricks、Hive 和其他平台的脚本。
如果您使用其他平台,请参阅 代码提取页面 获取平台的具体说明。如果您需要帮助将代码转换为适用于 SMA 的格式,请联系 sma-support@snowflake.com。
大小¶
Snowpark Migration Accelerator (SMA) 旨在分析源代码,而不是数据。为确保最佳性能并防止系统资源耗尽,我们建议:
仅包含要迁移的特定代码文件
避免包含不必要的库依赖关系
虽然您可以包含依赖库代码文件,但这样做会大大增加处理时间,而不会增加价值,因为 SMA 专门负责识别需要迁移的 Spark 代码。
我们建议收集以下所有代码文件:
作为计划流程的一部分自动运行的代码文件
用于创建或配置该流程的代码文件(如果是单独的)
由贵组织创建并在上述任一场景中使用的自定义库
您无需添加常见第三方库(例如 Pandas 或 Sci-Kit Learn)的代码。该工具将自动检测这些库引用并进行编目,无需其源代码。
能运行吗?¶
Snowpark Migration Accelerator (SMA) 只能处理完整且语法正确的源代码。您的代码必须能够在 支持的源平台 中成功运行。如果 SMA 报告多个 解析错误,这通常表示您的源代码包含语法错误。为了获得最佳结果,请确保您的输入目录仅包含可在源平台上执行的有效代码。
用例¶
查看扫描结果时,了解代码库的用途至关重要。它将帮助您:
确定哪些应用程序或进程在 Snowpark 中可能无法正常运行
更有效地了解和分析就绪度评估结果
检查您现有的代码和系统是否与 Snowflake 兼容
扫描使用不支持的 SQL 方言和不使用 Spark 的数据库连接器的笔记本时,SMA 将仅显示导入的第三方库。虽然这些信息很有用,但笔记本不会收到 Spark API 就绪度分数。了解您计划如何使用代码将有助于您更好地了解这些限制,并在迁移期间做出更好的决策。
从 Databricks 笔记本导出¶
Databricks 笔记本在单个笔记本中支持多种编程语言,例如 SQL、Scala 和 PySpark。导出笔记本时,文件扩展名将反映其主要语言:
Python 笔记本:.ipynb 或 .py
SQL 笔记本:.sql
导出期间,任何以不同于笔记本主要语言的语言编写的代码都将自动转换为注释。例如,如果您在 Python 笔记本中包含 SQL 代码,则 SQL 代码将作为注释出现在导出的文件中。

代码注释不在 SMA 分析中。为确保您的代码得到正确分析,请将其放在文件扩展名与源语言相匹配的文件中。例如:
Python 代码应该在 .py 文件中
SQL 代码应该在 .sql 文件中
请注意,如果代码位于扩展名错误的文件中(如 .sql 文件中的 Python 代码),则即使是未注释的代码也不会进行分析。
在使用该工具之前,请阅读文档中的 预处理注意事项 部分。本节包含您在继续操作之前需要了解的基本信息。
代码库引导教程¶
选择提取的示例代码库目录之一作为 Snowpark Migration Accelerator (SMA) 的输入。
迁移代码时,请保持原始文件夹结构。这样可以保留文件组织并帮助开发者了解代码架构。一次只能执行一个文件的代码转换进程和评估分析。
在本教程中,我们将使用小型、功能性的 Spark 代码示例(每个样本小于 1MB)。这些示例展示了可以转换的不同场景和功能。虽然这些示例是简化版本而非生产代码,但它们有效地演示了各种转换可能性。
源目录可以包含 Jupyter 笔记本 (.ipynb)、Python 脚本 (.py) 和文本文件。虽然 SMA 会检查代码库中的所有文件,但它仅在 Python (.py) 文件和 Jupyter 笔记本 (.ipynb) 文件中搜索 Spark API 引用。