Snowpark Migration Accelerator: 部署输出代码¶
要运行 Snowpark Migration Accelerator (SMA) 生成的输出代码,请根据您的源平台遵循这些针对特定环境的建议。
Spark Scala¶
在 Snowpark 中执行迁移的 Apache Spark 代码之前,请查看以下重要注意事项:
添加 Snowpark 和 Snowpark Extensions 库参考¶
迁移的项目必须包括对 Snowpark 库及其扩展的引用。
Snowpark Extensions¶
Snowpark Extensions 是一个库,将 Apache Spark 功能添加到标准 Snowpark 库中。这些功能目前在 Snowpark 中不可用。该库可帮助开发者更轻松地将其项目从 Apache Spark 迁移到 Snowpark。
按照以下步骤在迁移的代码中引用 Snowpark 和 Snowpark Extensions 库:
将 Snowpark 库引用添加到您的项目
将 Snowpark Extensions 库引用添加到您的项目
更新您的代码以使用这些库
第 1 步 – 将 Snowpark 和 Snowpark Extensions 库引用添加到项目配置文件¶
该工具会自动将这些依赖项添加到您的项目配置文件。添加依赖项后,您的构建工具将负责解析这些依赖项目。
根据您的项目配置文件的文件扩展名,该工具会自动通过以下方式添加相应的引用:
build.gradle¶
dependencies {
implementation 'com.snowflake:snowpark:1.6.2'
implementation 'net.mobilize.snowpark-extensions:snowparkextensions:0.0.9'
...
}
build.sbt¶
...
libraryDependencies += "com.snowflake" % "snowpark" % "1.6.2"
libraryDependencies += "net.mobilize.snowpark-extensions" % "snowparkextensions" % "0.0.9"
...
pom.xml¶
<dependencies>
<dependency>
<groupId>com.snowflake</groupId>
<artifactId>snowpark</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>net.mobilize.snowpark-extensions</groupId>
<artifactId>snowparkextensions</artifactId>
<version>0.0.9</version>
</dependency>
...
</dependencies>
第 2 步 – 添加 Snowpark Extensions 库导入语句¶
该工具会自动将这两个导入语句添加到每个生成的 .scala 文件。
import com.snowflake.snowpark_extensions.Extensions._
import com.snowflake.snowpark_extensions.Extensions.functions._
代码示例¶
下面的代码使用 hex 和 isin 函数,这两个函数是 Spark 的(但不是 Snowpark 的)原生函数。但是,代码仍能成功执行,因为这些函数通过 Snowpark Extensions 提供。
输入代码¶
package com.mobilize.spark
import org.apache.spark.sql._
object Main {
def main(args: Array[String]) : Unit = {
var languageArray = Array("Java");
var languageHex = hex(col("language"));
col("language").isin(languageArray:_*);
}
}
输出代码¶
package com.mobilize.spark
import com.snowflake.snowpark._
import com.snowflake.snowpark_extensions.Extensions._
import com.snowflake.snowpark_extensions.Extensions.functions._
object Main {
def main(args: Array[String]) : Unit = {
var languageArray = Array("Java");
// hex does not exist on Snowpark. It is a extension.
var languageHex = hex(col("language"));
// isin does not exist on Snowpark. It is a extension.
col("language").isin(languageArray :_*)
}
}
PySpark¶
在 Snowpark 中运行迁移的 PySpark 代码之前,请查看以下重要注意事项:
安装 Snowpark 和 Snowpark Extensions 库¶
迁移的项目必须包括对 Snowpark 库及其扩展的引用。
Snowpark Extensions¶
Snowpark Extensions 是一个库,将类似 PySpark 的功能添加到标准 Snowpark 库中。这些功能目前在 Snowpark 中不可用。该库可帮助开发者更轻松地将其项目从 PySpark 迁移到 Snowpark。
按照以下步骤在迁移的代码中引用 Snowpark 和 Snowpark Extensions 库:
将 Snowpark 库引用添加到迁移的代码
必要时包含 Snowpark Extensions 库引用
第 1 步 – 安装 Snowpark 库¶
pip install snowpark-extensions
第 2 步 – 安装 Snowpark Extensions 库¶
pip install snowflake-snowpark-python
第 3 步 – 添加 Snowpark Extensions 库导入语句¶
该工具会自动将 PySpark 导入语句添加到需要 PySpark 功能的每个文件中。
import snowpark_extensions
代码示例¶
create_map
函数在 PySpark 中不可用,但 Snowpark 通过其扩展支持该函数。这意味着您的代码无需任何修改即可在 Snowpark 中正常运行。
输入代码¶
import pyspark.sql.functions as df
df.select(create_map('name', 'age').alias("map")).collect()
输出代码¶
import snowpark_extensions
import snowflake.snowpark.functions as df
df.select(create_map('name', 'age').alias("map")).collect()