包括火花,避免巨大的依赖

时间:2017-01-03 09:29:48

标签: java maven apache-spark

我想在我的项目中包含spark sql。但是,如果这样做,jar文件会变得很大(超过120 MB),因为Maven包含许多依赖项。

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.1.0</version>
</dependency>

有没有办法最小化包含的依赖项?

1 个答案:

答案 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>