spark打包小知识

打包scala代码为jar包时的不同情况(1.只有一个scala文件;  2.项目结构中有多个scala文件)

例如:

 (1)如果只有一个scala文件时:

①在build.sbt中指定主类

mainClass in Compile := Some("com.example.MergeFiles") // 指定要打包的主类

②使用命令对整个项目进行打包

sbt assembly

(2)如果有多个scala文件并且只需要打包其中的某个scala文件为jar包

  • 删除其他文件的 main 方法

    如果您的项目包含多个 Scala 文件,但您只希望打包某一个包含 main 方法的文件(如:MergeFiles.scala),确保项目中其他文件没有 main 方法。然后,在 build.sbt 中指定要打包的主类:

    mainClass in Compile := Some("com.example.MergeFiles") // 只指定 MergeFiles 类
  • 使用 sbt package 打包

    如果您的项目中不需要依赖 sbt-assembly 插件(不需要创建 fat JAR),您可以直接使用 sbt package 来生成 JAR 文件。

    运行以下命令:

    sbt package

    这将生成一个 JAR 文件,但该文件不包含项目的所有依赖(只包含项目的代码)。生成的 JAR 文件位于 target/scala-2.12/ 目录下。

 

 

 

 

小注意:build.sbt文件中的name就是打包过后jar包的名字,在打包不同的代码为jar包时,记得修改名字,否则会覆盖之前的jar包

 

 

 最后:

也可以通过设置build.sbt的主类,然后使用sbt run 直接运行

 1 name := "CalculateAverageScore"
 2 
 3 version := "0.1"
 4 
 5 scalaVersion := "2.12.8"  // 确保与 Spark 兼容的版本
 6 
 7 libraryDependencies ++= Seq(
 8   "org.apache.spark" %% "spark-core" % "3.5.3",  // Spark 版本根据实际情况选择
 9   "org.apache.spark" %% "spark-sql" % "3.5.3"
10 )
11 mainClass in Compile := Some("bigdata3.CalculateAverageScore")  // 指定要打包的主类

 

posted @ 2024-12-19 11:22  连师傅只会helloword  阅读(74)  评论(0)    收藏  举报