40 votes

build.sbt: comment ajouter des dépendances spark

Bonjour, je suis en train de télécharger spark-core, spark-streaming, twitter4j, et spark-streaming-twitter dans la construction.sbt fichier ci-dessous:

name := "hello"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"
libraryDependencies += "org.apache.spark" % "spark-streaming_2.10" % "1.4.1"

libraryDependencies ++= Seq(
  "org.twitter4j" % "twitter4j-core" % "3.0.3",
  "org.twitter4j" % "twitter4j-stream" % "3.0.3"
)

libraryDependencies += "org.apache.spark" % "spark-streaming-twitter_2.10" % "0.9.0-incubating"

J'ai simplement pris cette libraryDependencies en ligne donc je ne suis pas sûr que les versions, etc. pour l'utiliser.

Quelqu'un peut-il m'expliquer comment je dois résoudre ce problème .sbt fichiers. J'ai passé quelques heures à essayer de comprendre, mais aucun des suggesstion travaillé. J'ai installé scala par homebrew et je suis sur la version 2.11.8

Toutes mes erreurs ont été sur:

Modules were resolved with conflicting cross-version suffixes.

52voto

marcospereira Points 3144

Le problème, c'est que vous êtes le mélange Scala 2.10 2.11 et des artefacts. Vous avez:

scalaVersion := "2.11.8"

Et puis:

libraryDependencies += "org.apache.spark" % "spark-streaming_2.10" % "1.4.1"

Où l' 2.10 artefact est nécessaire. Vous êtes également le mélange versions de Spark au lieu d'utiliser une version cohérente:

// spark 1.6.1
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"

// spark 1.4.1
libraryDependencies += "org.apache.spark" % "spark-streaming_2.10" % "1.4.1"

// spark 0.9.0-incubating
libraryDependencies += "org.apache.spark" % "spark-streaming-twitter_2.10" % "0.9.0-incubating"

Voici une build.sbt qui résout les deux problèmes:

name := "hello"

version := "1.0"

scalaVersion := "2.11.8"

val sparkVersion = "1.6.1"

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % sparkVersion,
  "org.apache.spark" %% "spark-streaming" % sparkVersion,
  "org.apache.spark" %% "spark-streaming-twitter" % sparkVersion
)

Vous n'avez pas besoin d'ajouter manuellement twitter4j dépendances depuis qu'ils sont ajoutés de manière transitive en spark-streaming-twitter.

7voto

AlexPes Points 131

Ça marche pour moi:

 name := "spark_local"

version := "0.1"

scalaVersion := "2.11.8"


libraryDependencies ++= Seq(
  "org.twitter4j" % "twitter4j-core" % "3.0.5",
  "org.twitter4j" % "twitter4j-stream" % "3.0.5",
  "org.apache.spark" %% "spark-core" % "2.0.0",
  "org.apache.spark" %% "spark-sql" % "2.0.0",
  "org.apache.spark" %% "spark-mllib" % "2.0.0",
  "org.apache.spark" %% "spark-streaming" % "2.0.0"
)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X