Snowpark Migration Accelerator: 出力コードの展開¶
Snowpark Migration Accelerator(SMA)によって生成された出力コードを実行するには、ソースプラットフォームに応じて、以下の環境固有の推奨事項に従います。
Spark Scala¶
移行したApache SparkコードをSnowparkで実行する前に、以下の重要な点を確認してください。
SnowparkおよびSnowpark拡張子ライブラリの参照の追加¶
移行したプロジェクトには、Snowparkライブラリとその拡張子の両方の参照が含まれている必要があります。
Snowpark Extensions¶
Snowpark Extensionsは、標準のSnowparkライブラリにApache Sparkの機能を追加するライブラリです。これらの機能は現在Snowparkでは使用できません。このライブラリは、開発者がプロジェクトをApache SparkからSnowparkへより簡単に移行するのに役立ちます。
以下のステップに従って、移行したコードでSnowparkとSnowpark Extensionsライブラリを参照します。
Snowparkライブラリの参照をプロジェクトに追加する
Snowpark Extensionsライブラリの参照をプロジェクトに追加する
これらのライブラリを使用するようにコードを更新する
ステップ1 - プロジェクト構成ファイルにSnowparkとSnowpark拡張子ライブラリの参照を追加する¶
ツールは自動的にこれらの依存関係をプロジェクト構成ファイルに追加します。依存関係を追加した後は、ビルドツールがその解決を処理します。
プロジェクト構成ファイル拡張子に基づいて、ツールは自動的に適切な参照を以下のように追加します。
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拡張子ライブラリのインポートステートメントを追加する¶
このツールは、生成されたすべての.scalaファイルに、これら2つのimportステートメントを自動的に追加します。
import com.snowflake.snowpark_extensions.Extensions._
import com.snowflake.snowpark_extensions.Extensions.functions._
コード例¶
以下のコードでは、 hex と isin 関数を使用しています。これらはSparkのネイティブ関数ですが、Snowparkにはありません。しかし、これらの関数はSnowparkの拡張子により提供されるため、コードは正常に実行されます。
入力コード¶
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¶
移行した PySpark コードをSnowparkで実行する前に、以下の重要な点を確認してください。
SnowparkとSnowparkの拡張子ライブラリをインストールする¶
移行したプロジェクトには、Snowparkライブラリとその拡張子の両方の参照が含まれている必要があります。
Snowpark Extensions¶
Snowpark Extensionsは、標準のSnowparkライブラリに PySpark のような機能を追加するライブラリです。これらの機能は現在Snowparkでは使用できません。このライブラリは、開発者がプロジェクトを PySpark からSnowparkに簡単に移行できるようにします。
以下のステップに従って、移行したコードでSnowparkとSnowpark Extensionsライブラリを参照します。
移行したコードにSnowparkライブラリの参照を追加する
必要に応じてSnowpark Extensionsライブラリの参照を含める
ステップ1 - Snowparkライブラリをインストールする¶
pip install snowpark-extensions
ステップ2 - Snowpark拡張ライブラリをインストールする¶
pip install snowflake-snowpark-python
ステップ3 - Snowpark拡張ライブラリのインポートステートメントを追加する¶
このツールは、 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()