sbtを使用したScalaハンドラーコードのパッケージ化

Scalaビルドツール(sbt)を使用して、コードをアセンブリ JAR として構築およびパッケージ化できます。 sbt-assemblyプラグイン を使用して、すべての依存関係を含む JAR ファイルを作成できます。

JAR ファイルを作成したら、そのファイルをSnowflakeステージにアップロードして、関数またはプロシージャの作成に使用する CREATE FUNCTION または CREATE PROCEDURE ステートメント内の IMPORTS パラメーターでそのファイルを参照できます。JAR ファイルのアップロードの詳細については、 コードで依存関係を利用できるようにする方法 をご参照ください。コードをインラインに配置するかステージ上に配置するかの選択の詳細については、 ハンドラーコードのインラインまたはステージ上での保持 をご参照ください。

ハンドラーコードを含むアセンブリ JAR ファイルを作成するには、次のステップを実行します。

  1. build.sbt ファイルを含むディレクトリで、 project/ サブディレクトリに plugins.sbt という名前のファイルを作成します。

    たとえば、 build.sbt ファイルを含むディレクトリが hello-snowpark/ の場合は、ファイル hello-snowpark/project/plugins.sbt を作成します。

    hello-snowpark/
    |-- build.sbt
        |-- project/
            |-- plugins.sbt
    
    Copy
  2. plugins.sbt ファイルに、次の行を追加します。

    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.1.0")
    
    Copy

    これにより、 sbt-assemblyプラグイン がプロジェクトに追加されます。

  3. プロジェクトで同じライブラリの複数のバージョンが必要な場合(例: プロジェクトが、異なるバージョンの3番目のライブラリを必要とする、2つのライブラリに依存している場合)、依存関係を解決するために build.sbt ファイルでマージ戦略を定義します。詳細については、 マージ戦略 をご参照ください。

  4. プロジェクトでSnowparkライブラリが必要な場合は、以下に示すように、 build.sbt ファイル内で libraryDependencies を使用してそれを参照します。必ず、少なくとも 必要な最小バージョン を使用してください。

    SnowparkライブラリはSnowflakeに含まれているため、依存関係が "provided" であることを指定して、 JAR ファイルから除外します。

    libraryDependencies += "com.snowflake" % "snowpark" % "1.1.0" % "provided"
    
    Copy
  5. プロジェクトのディレクトリ(例: hello-snowpark)に移動し、次のコマンドを実行します。

    sbt assembly
    
    Copy

    注釈

    エラー Not a valid command: assemblyNot a valid project ID: assembly、または Not a valid key: assembly が発生した場合は、 plugins.sbt ファイルが project/ という名前のサブディレクトリにあることを確認してください(ステップ1で説明のとおり)。

    このコマンドは、次の場所に JAR ファイルを作成します。

    target/scala-<version>/<project-name>-assembly-1.0.jar
    
    Copy