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

Здравствуйте, я пытаюсь загрузить spark-core, spark-streaming, twitter4j и spark-streaming-twitter в файле build.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.

person Bobby    schedule 22.06.2016    source источник


Ответы (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 транзитивно.

person marcospereira    schedule 22.06.2016
comment
Большое спасибо! Один быстрый вопрос: будет ли версия scala (2.11.8) работать со всеми библиотеками Spark, имеющими версию 1.6.1? - person Bobby; 22.06.2016
comment
да. Spark 1.6.1 имеет сборки для версии scala 2.10 и 2.11. - person marcospereira; 22.06.2016
comment
У меня есть еще один вопрос по этому поводу. Прости за это! Когда я делаю sbt run, кажется, что третья зависимость "org.apache.spark" %% "spark-core" % sparkVersion не загружается, и поэтому в моем файле scala в src/main/scala/example.scala я получаю сообщение об ошибке при инициализации контекста искры: 16/06/21 21:18:14 ERROR SparkContext: Error initializing SparkContext. java.net.UnknownHostException: LM-SFA-11002982: LM-SFA-11002982: nodename nor servname provided, or not known - person Bobby; 22.06.2016
comment
Эта ошибка не связана с загружаемыми зависимостями или нет. Вам следует задать еще один вопрос, чтобы разрешить это сомнение. - person marcospereira; 22.06.2016
comment
stackoverflow.com/questions/37959082 / Это новый вопрос, который я задал. Можете ли вы проверить это, если у вас есть время. Спасибо за ваше время и помощь! - person Bobby; 22.06.2016

Меня устраивает:

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"
)
person AlexPes    schedule 30.04.2018