我想在我的项目中包含spark sql。但是,如果这样做,jar文件会变得很大(超过120 MB),因为Maven包含许多依赖项。
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.0</version>
</dependency>
有没有办法最小化包含的依赖项?
答案 0 :(得分:3)
取决于您的使用案例。默认情况下,maven包含uber jar中spark-sql的所有依赖项。根据您的情况,您可能不会使用所有这些。因此,您可以将它们从您的依赖项中排除。
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.0</version>
<exclusions>
<!-- to remove jackson-databind from your uber jar -->
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusions>
</exclusions>
</dependency>
但如果你的应用程序使用了spark-sql的大部分功能,那么这对你没有帮助。
在许多情况下,spark依赖项将由您要运行应用程序的环境提供(除了独立模式)。在这种情况下,您可以将spark-sql依赖项标记为提供的依赖项,如下所示,
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.0</version>
<scope>provided</scope>
</dependency>