【发布时间】:2018-01-04 15:08:58
【问题描述】:
我有几个Spark 用Scala 编写的大数据应用程序。这些应用程序的其他版本写在R。
我还有一个用Java 编写的Web 服务器应用程序。这是作为 Web GUI 的 API 提供的。目的是使 GUI 能够执行这些应用程序并选择版本:R 或 Spark。我设法从Java API 调用R 代码并将结果发送给JSON。但是现在执行Spark 程序似乎相当复杂。
到目前为止,我能够将Scala .jar 文件之一与Java API 与Maven 合并。为此,我将Spark 程序作为本地存储库放置在pom.xml 中,以便Scala 代码包含在最终的.jar 包中。我还提到了Scala 和breeze 库作为pom.xml 中的依赖项。当我尝试使用 API 发送请求时,它当然会抛出错误消息java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$。至此,我意识到这是因为我没有在Maven 依赖项中提到Spark 库,但后来我认为我做错了,因为Spark 应用程序通常通过执行spark-submit 来运行终端中的命令。
所以现在我的想法是将Java API .jar 和Scala .jar 放在一个文件夹中,然后从Java API .jar 内部执行spark-submit,针对Scala 。罐。这甚至正确吗?以及如何从 Java 代码中执行spark-submit?是否必须使用here 中提到的Runtime.exec()?
【问题讨论】:
标签: java scala maven apache-spark jar