строить.sbt: как добавить зависимости spark

Привет я пытаюсь скачать spark-core, spark-streaming, twitter4j и spark-streaming-twitter в построении.SBT файл ниже:

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"

Я просто взял этот libraryDependencies онлайн, поэтому я не уверен, какие версии и т. д. использовать.

может кто-нибудь объяснить мне, как я должен это исправить .файлы sbt. Я потратил пару часов, пытаясь понять это, но ни одно из предложений не сработало. Я установил scala через homebrew, и я нахожусь на версии 2.11.8

все мои ошибки были о компании:

Modules were resolved with conflicting cross-version suffixes.

2 ответов


проблема в том, что вы смешиваете артефакты Scala 2.11 и 2.10. У вас есть:

scalaVersion := "2.11.8"

и затем:

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

здесь 2.10 артефакт требуют. Вы также смешиваете версии Spark вместо использования согласованной версии:

// 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"

здесь build.sbt это устраняет обе проблемы:

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
)

вам также не нужно вручную добавлять twitter4j зависимости, так как они добавляются транзитивно spark-streaming-twitter.


это работает для меня:

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"
)