使用 sbt 打包 Scala 处理程序代码¶
可以使用 Scala 构建工具 (sbt) 构建代码,并将代码打包为程序集 JAR。可以使用 sbt-assembly 插件 (https://github.com/sbt/sbt-assembly/blob/develop/README.md) 来创建一个包含所有依赖项的 JAR 文件。
有了 JAR 文件后,可以将该文件上传到 Snowflake 暂存区,然后在用于创建函数或过程的 CREATE FUNCTION 或 CREATE PROCEDURE 语句的 IMPORTS 参数中引用该文件。有关上传 JAR 文件的更多信息,请参阅 为代码提供依赖项。如需进一步了解是选择将代码内联,还是选择将代码存储在暂存区中,请参阅 将处理程序代码保持内联或保留在暂存区。
要创建包含处理程序代码的程序集 JAR 文件,请使用以下步骤。
在包含
build.sbt
文件的目录中,在project/
子目录中创建一个名为plugins.sbt
的文件。例如,如果包含
build.sbt
文件的目录是hello-snowpark/
,则创建文件hello-snowpark/project/plugins.sbt
:hello-snowpark/ |-- build.sbt |-- project/ |-- plugins.sbt
在
plugins.sbt
文件中,添加以下行:addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.1.0")
这会将 sbt-assembly 插件 (https://github.com/sbt/sbt-assembly/blob/develop/README.md) 添加到项目中。
如果项目需要同一个库的多个版本(例如,如果项目依赖于两个库,而这两个库需要第三个库的不同版本),请在
build.sbt
文件中定义合并策略来解决依赖关系。有关详细信息,请参阅 Merge Strategy (https://github.com/sbt/sbt-assembly/blob/develop/README.md#merge-strategy)。如果项目需要 Snowpark 库,请在
build.sbt
文件中通过libraryDependencies
来引用该库,如下所示。确保至少使用 所需的最低版本。由于 Snowpark 库包含在 Snowflake 中,因此,请将依赖项指定为
"provided"
,以将该库从 JAR 文件中排除。libraryDependencies += "com.snowflake" % "snowpark" % "1.1.0" % "provided"
切换到项目的目录(例如
hello-snowpark
),然后运行以下命令:sbt assembly
备注
如果遇到错误
Not a valid command: assembly
、Not a valid project ID: assembly
或Not a valid key: assembly
,请确保plugins.sbt
文件位于名为project/
的子目录中(如第 1 步中所述)。此命令在以下位置创建 JAR 文件:
target/scala-<version>/<project-name>-assembly-1.0.jar