Spark Maven和Jar Development Workflow与本地和远程服务器

时间:2017-06-10 17:46:26

标签: maven apache-spark intellij-idea

所以我有一个非常基本的问题,关于如何最有效地使用本地火花环境以及远程服务器部署,尽管有关于此的所有各种信息,我仍然找不到任何这些信息非常清楚。

我在我的pom中需要我的IntelliJ环境和依赖项,以便能够在intellij中编译和运行我的本地测试。然后我想通过scp复制我打包的jar文件来测试并运行远程服务器,然后运行spark-submits。

但是我不需要在我的pom文件中使用maven的任何依赖项,因为spark-submit只会使用服务器上的软件,所以我真的只需要一个带有类的jar文件并保持它非常轻量级因为scp会是最好的。我不确定我是否误解了这一点,但现在我只需要弄清楚如何排除在包装过程中添加到jar中的任何依赖性。这样做的正确方法是什么?

更新: 所以我设法使用下面的方法创建一个有和没有依赖关系的jar,我可以在构建之后上传一个没有任何依赖关系的服务器,但是如何构建一个没有任何依赖关系的jar文件,而不是等待一个更大的jar包含所有内容反正我也不需要:

    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
        <executions>
            <execution>
                <id>make-assembly</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

1 个答案:

答案 0 :(得分:0)

这里有两件事。

$strUsername = $_POST["txtUsername"]; 依赖关系范围将允许您在本地工作并阻止打包任何服务器提供的库。

如果没有创建 uber 着色的 jar,Maven不会打包外部库。

一个好的Spark POM的例子是provided by Databricks

另外值得一提的是,Maven copy local file to remote server using SSH

参见Maven Wagon SSH插件