使用 sbt 打包 Scala 处理程序代码

可以使用 Scala 构建工具 (sbt) 构建代码,并将代码打包为程序集 JAR。可以使用 sbt-assembly 插件 (https://github.com/sbt/sbt-assembly/blob/develop/README.md) 来创建一个包含所有依赖项的 JAR 文件。

有了 JAR 文件后,可以将该文件上传到 Snowflake 暂存区,然后在用于创建函数或过程的 CREATE FUNCTIONCREATE 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 插件 (https://github.com/sbt/sbt-assembly/blob/develop/README.md) 添加到项目中。

  3. 如果项目需要同一个库的多个版本(例如,如果项目依赖于两个库,而这两个库需要第三个库的不同版本),请在 build.sbt 文件中定义合并策略来解决依赖关系。有关详细信息,请参阅 Merge Strategy (https://github.com/sbt/sbt-assembly/blob/develop/README.md#merge-strategy)。

  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: assemblyNot a valid key: assembly,请确保 plugins.sbt 文件位于名为 project/ 的子目录中(如第 1 步中所述)。

    此命令在以下位置创建 JAR 文件:

    target/scala-<version>/<project-name>-assembly-1.0.jar
    
    Copy
语言: 中文