Pow*_*ers 10 scala sbt sbt-assembly apache-spark spark-packages
spark-daria项目上传到Spark Packages,我正在使用sbt-spark-package插件访问另一个SBT项目中的spark-daria代码.
我可以在文件中sbt assembly
使用以下代码生成的胖JAR文件中包含spark-daria build.sbt
.
spDependencies += "mrpowers/spark-daria:0.3.0"
val requiredJars = List("spark-daria-0.3.0.jar")
assemblyExcludedJars in assembly := {
val cp = (fullClasspath in assembly).value
cp filter { f =>
!requiredJars.contains(f.data.getName)
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码感觉就像一个黑客.有没有更好的方法在fat JAR文件中包含spark-daria?
NB我想在这里建立一个半胖的JAR文件.我希望spark-daria包含在JAR文件中,但我不希望JAR文件中包含所有Spark!
0.2.6 版本的自述文件说明如下:
在任何情况下,如果您确实无法使用指定 Spark 依赖项
sparkComponents
(例如您有排除规则)并将它们配置为provided
(例如用于演示的独立 jar),您可以使用该插件spIgnoreProvided := true
来正确使用该assembly
插件。
然后,您应该在构建定义中使用此标志并设置 Spark 依赖项,就像我在以下示例中provided
所做的那样:spark-sql:2.2.0
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.0" % "provided"
Run Code Online (Sandbox Code Playgroud)
请注意,通过设置此选项,您的 IDE 可能不再具有在本地编译和运行代码所需的依赖项引用,这意味着您必须手动将必要的 JAR 添加到类路径中。我经常在 IntelliJ 上执行此操作,我所做的就是在我的计算机上安装 Spark 发行版,并将其jars
目录添加到 IntelliJ 项目定义中(如果您需要的话,这个问题可能会帮助您)。
归档时间: |
|
查看次数: |
533 次 |
最近记录: |