Intellij artifact工具不会创建正确的可执行文件spark jar

时间:2018-06-17 09:54:58

标签: maven apache-spark intellij-idea

我在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依赖格式。我在使用Spark依赖项(不可执行)从我的编写类创建jar文件时遇到了同样的问题。例如,在获取一些其他依赖项(如spark-sql)时,向Maven项目eventuate添加spark-catalyst依赖项。有没有办法使用IntelliJ IDEA导出Spark可执行jar文件?

1 个答案:

答案 0 :(得分:-1)

maven-shade-plugin可以是创建Uber jar的替代选项。 Here是详细的pom.xml。