java - 包含 Spark 以避免巨大的依赖关系

标签 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>

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

最佳答案

取决于您的用例。默认情况下,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>

关于java - 包含 Spark 以避免巨大的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41440252/

相关文章:

java - 在java中将属性转换为标签

java - 使用 Eclipse 将所有外部类打包到我的 jar 中

maven - httpclientSchemeRegistryFactory.createSystemDefault没有这样的方法错误

java - NoClassDefFoundError ForkedBooter

apache-spark - Apache Spark SQLContext 与 HiveContext 有什么区别?

java - 使用 Hibernate 注释时未创建数据库表

java - 如何从 Google 数据存储中检索数据?

sql - Spark SQL中如何按时间间隔分组

java - 批量查询到 Cassandra

hadoop - 如何从 spark thrift 服务器使用 hadoop?