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 库:

  1. 将 Snowpark 库引用添加到您的项目

  2. 将 Snowpark Extensions 库引用添加到您的项目

  3. 更新您的代码以使用这些库

第 1 步 – 将 Snowpark 和 Snowpark Extensions 库引用添加到项目配置文件

该工具会自动将这些依赖项添加到您的项目配置文件。添加依赖项后,您的构建工具将负责解析这些依赖项目。

根据您的项目配置文件的文件扩展名,该工具会自动通过以下方式添加相应的引用:

build.gradle

dependencies {
    implementation 'com.snowflake:snowpark:1.6.2'
    implementation 'net.mobilize.snowpark-extensions:snowparkextensions:0.0.9'
    ...
}
Copy

build.sbt

...
libraryDependencies += "com.snowflake" % "snowpark" % "1.6.2"
libraryDependencies += "net.mobilize.snowpark-extensions" % "snowparkextensions" % "0.0.9"
...
Copy

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>
Copy

第 2 步 – 添加 Snowpark Extensions 库导入语句

该工具会自动将这两个导入语句添加到每个生成的 .scala 文件。

import com.snowflake.snowpark_extensions.Extensions._
import com.snowflake.snowpark_extensions.Extensions.functions._
Copy

代码示例

下面的代码使用 hexisin 函数,这两个函数是 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:_*);
   }

}
Copy

输出代码

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 :_*)

   }

}
Copy

PySpark

在 Snowpark 中运行迁移的 PySpark 代码之前,请查看以下重要注意事项:

安装 Snowpark 和 Snowpark Extensions 库

迁移的项目必须包括对 Snowpark 库及其扩展的引用。

Snowpark Extensions

Snowpark Extensions 是一个库,将类似 PySpark 的功能添加到标准 Snowpark 库中。这些功能目前在 Snowpark 中不可用。该库可帮助开发者更轻松地将其项目从 PySpark 迁移到 Snowpark。

按照以下步骤在迁移的代码中引用 Snowpark 和 Snowpark Extensions 库:

  1. 将 Snowpark 库引用添加到迁移的代码

  2. 必要时包含 Snowpark Extensions 库引用

第 1 步 – 安装 Snowpark 库

pip install snowpark-extensions
Copy

第 2 步 – 安装 Snowpark Extensions 库

pip install snowflake-snowpark-python
Copy

第 3 步 – 添加 Snowpark Extensions 库导入语句

该工具会自动将 PySpark 导入语句添加到需要 PySpark 功能的每个文件中。

import snowpark_extensions
Copy

代码示例

create_map 函数在 PySpark 中不可用,但 Snowpark 通过其扩展支持该函数。这意味着您的代码无需任何修改即可在 Snowpark 中正常运行。

输入代码

import pyspark.sql.functions as df
df.select(create_map('name', 'age').alias("map")).collect()
Copy

输出代码

import snowpark_extensions
import snowflake.snowpark.functions as df
df.select(create_map('name', 'age').alias("map")).collect()
Copy
语言: 中文