Packen von Scala-Handler-Code mit sbt

Sie können das Scala-Build-Tool (sbt) verwenden, um Build- und Paketerstellung Ihres Codes als eine Assembly-JAR-Datei vorzunehmen. Sie können das sbt-assembly-Plugin verwenden, um eine JAR-Datei erstellen, die alle Abhängigkeiten enthält.

Sobald die JAR-Datei erstellt ist, können Sie die Datei in einen Snowflake-Stagingbereich hochladen und dann im IMPORTS-Parameter der CREATE FUNCTION- oder CREATE PROCEDURE-Anweisung referenzieren, die Sie zum Erstellen der Funktion oder Prozedur verwenden. Weitere Informationen zum Hochladen von JAR-Dateien finden Sie unter Abhängigkeiten für Code zur Verfügung stellen. Weitere Informationen zur Entscheidung, ob der Code inline oder in einem Stagingbereich aufbewahrt werden soll, finden Sie unter Speichern von Handler-Code inline oder in einem Stagingbereich.

Gehen Sie wie folgt vor, um eine Assembly-JAR-Datei zu erstellen, die Ihren Handler-Code enthält.

  1. Erstellen Sie im Unterverzeichnis project/ des Verzeichnisses, in dem sich Ihre build.sbt-Datei befindet, eine Datei namens plugins.sbt.

    Wenn das Verzeichnis, in dem sich Ihre build.sbt-Datei befindet, zum Beispiel hello-snowpark/ ist, erstellen Sie die Datei hello-snowpark/project/plugins.sbt:

    hello-snowpark/
    |-- build.sbt
        |-- project/
            |-- plugins.sbt
    
    Copy
  2. Fügen Sie der plugins.sbt-Datei die folgende Zeile hinzu:

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

    Damit wird das sbt-assembly-Plugin zu Ihrem Projekt hinzugefügt.

  3. Wenn Ihr Projekt mehrere Versionen der gleichen Bibliothek benötigt (z. B. wenn Ihr Projekt von zwei Bibliotheken abhängt, die unterschiedliche Versionen einer dritten Bibliothek benötigen), definieren Sie in Ihrer build.sbt-Datei eine Zusammenführungsstrategie, um die Abhängigkeiten aufzulösen. Weitere Informationen dazu finden Sie unter Zusammenführungsstrategie.

  4. Wenn Ihr Projekt die Snowpark-Bibliothek benötigt, referenzieren Sie diese in Ihrer build.sbt-Datei mit libraryDependencies, wie unten gezeigt. Achten Sie darauf, dass Sie mindestens die erforderliche Mindestversion verwenden.

    Da die Snowpark-Bibliothek in Snowflake enthalten ist, müssen Sie diese aus der JAR-Datei ausschließen: Geben Sie an, dass die Abhängigkeit "provided" ist.

    libraryDependencies += "com.snowflake" % "snowpark" % "1.1.0" % "provided"
    
    Copy
  5. Wechseln Sie in das Verzeichnis Ihres Projekts (z. B. hello-snowpark), und führen Sie den folgenden Befehl aus:

    sbt assembly
    
    Copy

    Bemerkung

    Wenn der Fehler Not a valid command: assembly, Not a valid project ID: assembly oder Not a valid key: assembly auftritt, vergewissern Sie sich, dass sich die Datei plugins.sbt in dem Unterverzeichnis mit dem Namen project/ befindet (wie in Schritt 1 erwähnt).

    Mit diesem Befehl wird am folgenden Speicherort eine JAR-Datei erstellt:

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