如何使用Scala .jar在Java中执行spark-submit?

问题描述 投票:0回答:1

我有几个用Spark编写的Scala大数据应用程序。这些应用程序的另一个版本是用R编写的。

我还有一个用Java编写的Web服务器应用程序。这是作为Web GUI的API提供的。目的是使GUI能够执行这些应用程序并选择版本:RSpark。我设法从R API调用Java代码并将结果发送到JSON。但现在执行Spark程序似乎相当复杂。

到目前为止,我能够将其中一个Scala .jar文件与Java API与Maven合并。我这样做是将我的Spark程序作为pom.xml中的本地存储库,以便Scala代码包含在最终的.jar包中。我还提到Scalabreeze库作为pom.xml中的依赖项。当我尝试使用API​​发送请求时,当然会抛出一个错误,说java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$。到目前为止,我意识到这是因为我没有在Spark依赖项中提到Maven库,但后来我认为我做错了,因为Spark应用程序通常通过在终端中执行spark-submit命令来运行。

所以我现在想的是将Java API .jar和Scala .jar放在一个文件夹中,然后从spark-submit API .jar中执行Java,目标是Scala .jar。这甚至是正确的吗?以及如何从Java代码执行spark-submit?它是否必须使用Runtime.exec()中提到的here

java scala maven apache-spark jar
1个回答
1
投票

qazxsw我可以用来从Java Api代码提交spark代码(用scala编写,预编译的jar qazxsw poi放在某个位置)。

使用SparkLauncher的SparkLauncher建议采用以下方式从Java应用程序内部以编程方式提交spark作业。在Java Api代码中添加以下代码。

scala.jar
© www.soinside.com 2019 - 2024. All rights reserved.