Scala-UDF-Handler – Projekt und Paketerstellung

Durch eine gut organisierte Projekthierarchie und gängige Build-Tools können Sie die Wartung von Handler-Code-Projekten erleichtern. Build-Tools sind nützlich, wenn Sie beabsichtigen, Handler-Code in einen Snowflake-Stagingbereich zu kopieren, um dann von Funktionen und Prozeduren aus auf ihn zu verweisen.

Für Build und Paketerstellung von Handler-Code können Sie gängige Tools wie sbt, Maven und Gradle verwenden. Weitere Informationen dazu finden Sie unter folgenden Themen:

Sobald Sie den Handler-Code gepackt haben, können Sie ihn wie unter Abhängigkeiten für Code zur Verfügung stellen beschrieben zu einem Stagingbereich hinzufügen.

Weitere Informationen zur Entscheidung, ob der Handler inline oder in einem Stagingbereich aufbewahrt werden soll, finden Sie unter Speichern von Handler-Code inline oder in einem Stagingbereich.

Organisieren Ihrer Dateien

Wenn Sie beabsichtigen, Ihren Handler in eine JAR-Datei zu packen und in einem Snowflake-Stagingbereich bereitzustellen, kann die Verwendung einer Projekthierarchie helfen, den Snowflake-Handler-Code zu organisieren. In diesem Abschnitt wird eine Hierarchie für die Organisation der Dateien vorgeschlagen.

Eine GitHub-Vorlage, mit der Sie eine Projekthierarchie wie diese erstellen können, finden Sie im Snowflake-Labs GitHub Repository.

SnowflakeProject
|-- project
|   |-- plugins.sbt
|-- src
|   |-- main / scala / org / example
|   |   |-- function
|   |   |   |-- FunctionHandler.scala
|   |   |-- procedure
|   |   |-- utils
|   |-- test / scala / org / example
|   |   |-- function
|   |   |-- procedure
|-- build.sbt
|-- pom.xml
Copy

In der folgenden Tabelle werden die Abschnitte der Hierarchie beschrieben.

Verzeichnis/Datei

Beschreibung

project-Verzeichnis

Enthält Dateien, die von sbt verwendet werden, um Build- und Paketerstellung von Code zu steuern.

  • plugins.sbt-Datei gibt die von sbt verwendeten Plugins an. Um Code für die Verwendung in Snowflake zu erstellen, fügen Sie ein Plugin hinzu, das das Erstellen einer JAR-Datei mit den Abhängigkeiten Ihres Handlers unterstützt. Weitere Informationen dazu finden Sie unter Packen von Scala-Handler-Code mit sbt.

src / main / scala / org / example-Verzeichnis

Enthält die Quelldateien des Handler-Codes.

  • Verwenden Sie das Verzeichnis function, um Handler-Quellen für benutzerdefinierte Funktionen (UDFs) zu speichern.

  • Verwenden Sie das Verzeichnis procedure, um Handler-Quellen für gespeicherte Prozeduren zu speichern.

  • Verwenden Sie das Verzeichnis utils, um die für beide benötigten Handler-Quellen zu speichern.

src / test / scala / org / example-Verzeichnis

Enthält Quelldateien zum Handler-Test.

  • Verwenden Sie das Verzeichnis function, um Tests für benutzerdefinierte Funktionen (UDFs) zu speichern.

  • Verwenden Sie das Verzeichnis procedure, um Tests für gespeicherte Prozeduren zu speichern.

build.sbt-Datei

Gibt die von sbt verwendete Build-Definition an, einschließlich Name und Version der erstellten Ausgabe, Abhängigkeiten usw. Weitere Informationen dazu finden Sie unter Packen von Scala-Handler-Code mit sbt.

pom.xml-Datei

Gibt die von Maven verwendete Build-Definition an. Weitere Informationen dazu finden Sie unter Packen von Java- oder Scala-Handler-Code mit Maven.