我是新来的,所以听起来可能很傻。我正在本地计算机上编写Scala Spark代码,然后将其上载到集群以执行(测试环境)。
我的问题是,在创建Jar时,因为它们存在于集群中,所以我不想包括Spark依赖项。但是要在本地运行代码,我需要它们。
到目前为止,我已经尝试提供所提供的范围
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.compat.version}</artifactId>
<version>2.4.0</version>
<scope>provided</scope>
</dependency>
这使我可以从Jar中排除依赖项,但是当我在本地运行它时,我需要删除作用域。我查看了其他范围选项,但找不到适合我的选项。
我想念什么?
最佳答案
您需要使用其他maven profiles。
这样的事情将帮助您:
<profiles>
<profile>
<id>test</id>
…
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.compat.version}</artifactId>
<version>2.4.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
…
</profile>
<profile>
<id>debug</id>
…
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.compat.version}</artifactId>
<version>2.4.0</version>
</dependency>
</dependencies>
…
</profile>
</profiles>
然后,您可以在远程运行
test
配置文件,并在本地运行debug
配置文件。