智能利杰工件工具未创建正确的可执行火花罐



我在IntelliJ IDEA 2018中创建了一个Spark maven项目,并尝试导出主类的可执行jar文件。当我尝试将其提交到 Yarn 集群时,它The main class not found!错误,而MANIFEST.MF包含它:

Manifest-Version: 1.0
Main-Class: Test

我对其他处理引擎(如Apache Flink(做了同样的事情,IntelliJ可以创建一个在集群上成功运行的可执行jar文件。

因此,在 Spark 的情况下,我始终必须使用maven-assembly-plugin并使用以下命令导出 jar 文件:mvn clean compile assembly:single

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>Test</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>

我想这是因为火花依赖格式。在使用 Spark 依赖项(不可执行(从我编写的类创建 jar 文件时,我遇到了同样的问题。例如,spark-sql依赖项添加到 Maven 项目最终会获得一些其他依赖项,例如spark-catalyst。有没有办法使用 IntelliJ IDEA 导出 Spark 可执行 jar 文件?

maven-shade-plugin可以是创建Uber jar的替代选择。这是详细的绒球.xml。