Snowpark Migration Accelerator:关于代码准备的说明¶
在运行 Snowpark Migration Accelerator (SMA) 之前,请确保所有源代码文件都位于安装 SMA 的计算机上。您无需连接到任何源数据库或 Spark 环境,因为 SMA 仅执行代码分析。
源代码必须采用可读格式,SMA 才能正确处理,因为该工具完全依赖于您提供的源代码。
提取¶
在运行 Snowpark Migration Accelerator (SMA) 之前,将所有源代码文件整理到一个主文件夹中。您可以在此主文件夹中保留现有的子文件夹结构,但是所有代码文件都必须位于这个目录下。此要求适用于:
支持以下文件类型:
GitHub 存储库(作为 ZIP 文件下载并解压缩到本地计算机)
Python 脚本文件
Scala 项目文件
Databricks 笔记本文件
Jupyter 笔记本在您的本地计算机上运行
在开始迁移之前,将所有源代码文件收集到一个主文件夹中。虽然您的源代码可能来自不同位置,但将其放在一个地方将提高迁移过程的效率。如果您已经建立了文件组织结构,请将其完整地保存在主文件夹中。
Export GitHub repositories to ZIP files (https://docs.github.com/en/repositories/working-with-files/using-files/downloading-source-code-archives)
To generate accurate and complete reports using the Snowpark Migration Accelerator (SMA), scan only the code that is relevant to your migration project. Rather than scanning all available code, identify and include only the essential code files that you plan to migrate. For more information, refer to Size in the Considerations section.
注意事项¶
让我们来看看哪些文件类型与 Snowpark Migration Accelerator (SMA) 兼容,并了解准备源代码以供使用 SMA 进行分析时的关键注意事项。
Filetypes(文件类型)¶
Snowpark Migration Accelerator (SMA) 会检查源目录中的所有文件,但仅处理具有特定扩展名且可能包含 Spark API 代码的文件。这包括常规代码文件和 Jupyter 笔记本。
You can find a list of file types that SMA supports in the Supported Filetypes section of this documentation.
导出的文件¶
如果您的代码存储在源代码控制平台中而不是本地文件中,则需要将其导出为 SMA 可以处理的格式。以下是导出代码的方法:
For Databricks users: To use the Snowpark Migration Accelerator (SMA), you need to export your notebooks to .dbc format. You can find detailed instructions on how to export notebooks in the Databricks documentation on exporting notebooks (https://docs.databricks.com/en/notebooks/notebook-export-import.html#export-notebooks.).
Need help exporting files? Visit the export scripts in the Snowflake Labs Github repo (https://github.com/Snowflake-Labs/SC.DDLExportScripts/tree/main), where Snowflake Professional Services maintains scripts for Databricks, Hive, and other platforms.
If you are using a different platform, please refer to the Code Extraction page for specific instructions for your platform. If you need assistance converting your code into a format that works with SMA, please contact sma-support@snowflake.com.
大小¶
Snowpark Migration Accelerator (SMA) 旨在分析源代码,而不是数据。为确保最佳性能并防止系统资源耗尽,我们建议:
仅包含要迁移的特定代码文件
避免包含不必要的库依赖关系
虽然您可以包含依赖库代码文件,但这样做会大大增加处理时间,而不会增加价值,因为 SMA 专门负责识别需要迁移的 Spark 代码。
我们建议收集以下所有代码文件:
作为计划流程的一部分自动运行的代码文件
用于创建或配置该流程的代码文件(如果是单独的)
由贵组织创建并在上述任一场景中使用的自定义库
您无需添加常见第三方库(例如 Pandas 或 Sci-Kit Learn)的代码。该工具将自动检测这些库引用并进行编目,无需其源代码。
能运行吗?¶
The Snowpark Migration Accelerator (SMA) can only process complete and syntactically correct source code. Your code must be able to run successfully in a supported source platform. If the SMA reports multiple parsing errors, this usually indicates that your source code contains syntax errors. To achieve the best results, ensure that your input directory contains only valid code that can be executed on the source platform.
用例¶
查看扫描结果时,了解代码库的用途至关重要。它将帮助您:
确定哪些应用程序或进程在 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 代码),则即使是未注释的代码也不会进行分析。
Before using the tool, please read the Pre-Processing Considerations section in our documentation. This section contains essential information that you need to know before proceeding.
代码库引导教程¶
选择提取的示例代码库目录之一作为 Snowpark Migration Accelerator (SMA) 的输入。
迁移代码时,请保持原始文件夹结构。这样可以保留文件组织并帮助开发者了解代码架构。一次只能执行一个文件的代码转换进程和评估分析。
在本教程中,我们将使用小型、功能性的 Spark 代码示例(每个样本小于 1MB)。这些示例展示了可以转换的不同场景和功能。虽然这些示例是简化版本而非生产代码,但它们有效地演示了各种转换可能性。
源目录可以包含 Jupyter 笔记本 (.ipynb)、Python 脚本 (.py) 和文本文件。虽然 SMA 会检查代码库中的所有文件,但它仅在 Python (.py) 文件和 Jupyter 笔记本 (.ipynb) 文件中搜索 Spark API 引用。