web-dev-qa-db-fra.com

build.sbt: comment ajouter des dépendances spark

Bonjour, j'essaye de télécharger spark-core, spark-streaming, Twitter4j, et spark-streaming-Twitter dans le fichier build.sbt 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 ce libraryDependencies en ligne, je ne sais donc pas quelles versions, etc. utiliser.

Quelqu'un peut-il m'expliquer s'il vous plaît comment je devrais réparer ce fichier .sbt. J'ai passé quelques heures à essayer de comprendre, mais aucune des suggestions n'a fonctionné. J'ai installé scala via homebrew et je suis sur la version 2.11.8

Toutes mes erreurs concernaient:

Modules were resolved with conflicting cross-version suffixes.
33
Bobby

Le problème est que vous mélangez des artefacts Scala 2.11 et 2.10. Vous avez:

scalaVersion := "2.11.8"

Et alors:

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

Où le 2.10 l'artefact est requis. Vous mélangez également les versions 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 également pas besoin d'ajouter manuellement Twitter4j _ dépendances puisqu'elles sont ajoutées transitoirement par spark-streaming-Twitter.

43
marcospereira

Ç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"
)
5
AlexPes