Ale*_*rin 25 intellij-idea sbt sbt-assembly apache-spark
我正在Scala中构建一个Apache Spark应用程序,我正在使用SBT来构建它.这是事情:
sbt test,我希望Spark依赖项包含在类路径中(与#1相同,但来自SBT)为了匹配约束#2,我将Spark依赖关系声明为provided:
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-streaming" % sparkVersion % "provided",
...
)
Run Code Online (Sandbox Code Playgroud)
然后,sbt-assembly的文档建议添加以下行以包含单元测试的依赖项(约束#3):
run in Compile <<= Defaults.runTask(fullClasspath in Compile, mainClass in (Compile, run), runner in (Compile, run))
Run Code Online (Sandbox Code Playgroud)
这使得约束#1没有被完全填充,即我无法在IntelliJ IDEA中运行应用程序,因为没有拾取Spark依赖项.
使用Maven,我使用特定的配置文件来构建超级JAR.这样,我将Spark依赖关系声明为主要配置文件(IDE和单元测试)的常规依赖关系,同时将它们声明provided为胖JAR打包.请参阅https://github.com/aseigneurin/kafka-sandbox/blob/master/pom.xml
使用SBT实现这一目标的最佳方法是什么?
Ale*_*rin 17
(用我从另一个频道得到的答案回答我自己的问题......)
为了能够从IntelliJ IDEA运行Spark应用程序,您只需在src/test/scala目录中创建一个主类(test,而不是main).IntelliJ将获取provided依赖项.
object Launch {
def main(args: Array[String]) {
Main.main(args)
}
}
Run Code Online (Sandbox Code Playgroud)
感谢Matthieu Blanc指出这一点.
Mar*_*app 13
在IntelliJ配置中使用新的"包含依赖关系"提供"范围".
您不应该在 SBT 中查找 IDEA 特定设置。首先,如果程序要使用spark-submit运行,那么你如何在IDEA上运行它?我猜你会在 IDEA 中作为独立运行,同时通过 Spark-Submit 正常运行它。如果是这种情况,请使用“文件”|“项目结构”|“库”在 IDEA 中手动添加 Spark 库。您将看到 SBT 列出的所有依赖项,但您可以使用 +(加号)符号添加任意 jar/maven 工件。这应该够了吧。
| 归档时间: |
|
| 查看次数: |
10771 次 |
| 最近记录: |