2017-01-03 41 views
1

我想在我的项目中包含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

基本问题:为什么要在其他应用程序中嵌入火花?它应该在群集上运行,而不是嵌入到其他应用程序中 –

+0

我对Spark没有真正的兴趣。但是我需要某种类型的数据框,如Java中的R数据框或Pandas数据框,代码必须在Apache或MIT许可下。你有什么其他的建议? – David

+0

你想要什么样的工作有数据框? –

回答

1

取决于您的用例。默认情况下,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的大部分功能,这不会对您有所帮助。

在许多情况下,火花依赖性将由您将运行应用程序的环境(除了独立模式)提供。在这种情况下,你可以如下图所示只是标志火花SQL依赖所提供的依赖性,

<dependency> 
    <groupId>org.apache.spark</groupId> 
    <artifactId>spark-sql_2.11</artifactId> 
    <version>2.1.0</version> 
    <scope>provided</scope> 
</dependency> 
相关问题