2014-06-27 22 views
5

Hadoop 2.4.0 auf zwei verschiedene Versionen von Beanutils abhängt, verursacht den folgenden Fehler mit sbt-assembly:Hadoop hängt von zwei verschiedenen Versionen von Beanutils

[error] (*:assembly) deduplicate: different file contents found in the following: 
[error] .ivy2/cache/commons-beanutils/commons-beanutils/jars/commons-beanutils-1.7.0.jar:org/apache/commons/beanutils/BasicDynaBean.class 
[error] .ivy2/cache/commons-beanutils/commons-beanutils-core/jars/commons-beanutils-core-1.8.0.jar:org/apache/commons/beanutils/BasicDynaBean.class 

Beide Abhängigkeiten transitiv sind von Hadoop 2.4.0, als bestätigt mit How to access Ivy directly, i.e. access dependency reports or execute Ivy commands?

Wie kann ich eine sbt-Assembly einschließlich Hadoop 2.4.0 machen?

UPDATE: Wie gewünscht, hier ist die build.sbt Abhängigkeiten:

libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.4.0" 

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.0.0" % "provided" exclude("org.apache.hadoop", "hadoop-client") 

resolvers += "Akka Repository" at "http://repo.akka.io/releases/" 

libraryDependencies += "com.amazonaws" % "aws-java-sdk" % "1.7.8" 

libraryDependencies += "commons-io" % "commons-io" % "2.4" 

libraryDependencies += "javax.servlet" % "javax.servlet-api" % "3.0.1" % "provided" 

libraryDependencies += "com.sksamuel.elastic4s" %% "elastic4s" % "1.1.1.0" 

Die exclude hadoop benötigt wird, da, aus dem Kasten heraus, Spark-Hadoop 1 enthält, die mit Hadoop Konflikt 2.

+1

Können Sie 'build.sbt' mit Abhängigkeiten hinzu? – lpiepiora

+0

@lpiepiora - Fertig, könntest du einen Blick darauf werfen? – SRobertJames

+0

Das Problem ist, dass der Funke-Kern, der im Repo ist gegen Hadoop gebaut 1. Selbst wenn Sie die Abhängigkeitsproblem lösen Sie derzeit haben, werden Sie als nächstes Probleme (es Ich habe getestet) zu bekommen, um. Vielleicht können Sie das Klonen von Spark erwägen und Ihre eigene Version gegen Hadoop 2 erstellen (Spark Build scheint es zu unterstützen) – lpiepiora

Antwort

2

Versuchen Merge-Strategie hinzufügen

Wie unten

build.sbt
+0

'org.apache' ist zu aggressiv IMO –