2017-01-03 45 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> 
相關問題