我的火花作业如下所示:
spark-submit --jar test1.jar,test2.jar \
--class org.mytest.Students \
--num-executors ${executors} \
--master yarn \
--deploy-mode cluster \
--queue ${mapreduce.job.queuename} \
--driver-memory ${driverMemory} \
--conf spark.executor.memory=${sparkExecutorMemory} \
--conf spark.rdd.compress=true \
--conf "spark.executor.extraJavaOptions=-XX:+UseG1GC -
XX:MaxGCPauseMillis=100
${SPARK_JAR} "${INPUT}" "${OUTPUT_PATH}"
是否可以传递包含test1.jar和test2.jar的单个jar。像--jars mainTest.jar(包含test1.jar和test2.jar) 我的问题基本上可以引发一罐罐子。我使用的是1.3版本。
答案 0 :(得分:3)
问题:火花可以爆炸一罐罐子吗?
...是
正如T. Gaweda建议的那样,我们可以用maven程序集插件实现.... 想把其他选择放在这里......
(特别有用,因为它合并特定文件的内容而不是覆盖它们。当资源文件在jars中具有相同的名称并且插件尝试打包所有资源文件时,这是必需的。)
此插件提供了将工件打包的功能 uber-jar,包括它的依赖关系和阴影 - 即重命名 - 一些依赖项的包
目标概述 Shade插件只有一个目标:
shade:shade
绑定到包阶段并用于创建 阴影罐。
sbt-assembly
是一个sbt插件,用于创建sbt项目的胖JAR 包含所有依赖项。在project / plugin.sbt
中添加sbt-assembly插件
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.9.1")
Specify sbt-assembly.git as a dependency in project/project/build.scala
import sbt._
object Plugins extends Build {
lazy val root = Project("root", file(".")) dependsOn(
uri("git://github.com/sbt/sbt-assembly.git#0.9.1")
)
}
在build.sbt
文件中添加以下内容
import AssemblyKeys._ // put this at the top of the file,leave the next line blank
assemblySettings
使用完整键配置程序集插件。有关详细信息refer
target assembly-jar-name test
assembly-option main-class
full-classpath dependency-classpath assembly-excluded-files
assembly-excluded-jars
如果多个文件共享相同的相对路径,则默认策略是验证所有候选项具有相同的内容,否则出错。可以使用程序集合并策略为Spark项目配置此行为,如下所示。
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
{
case PathList("javax", "servlet", xs @ _*) => MergeStrategy.last
case PathList("org", "apache", xs @ _*) => MergeStrategy.last
case PathList("com", "esotericsoftware", xs @ _*) => MergeStrategy.last
case "about.html" => MergeStrategy.rename
case x => old(x)
}
}
从根文件夹运行
sbt/sbt assembly
程序集插件然后将类文件和所有依赖项打包到一个JAR文件中
答案 1 :(得分:2)
您可以简单地将这些罐子合并到一个带阴影的Jar中。请阅读此问题:How can I create an executable JAR with dependencies using Maven?
您将在一个Jar中拥有所有课程。嵌套的Jars没有问题。