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.
Ответы
Ответ 1
Проблема в том, что вы смешиваете артефакты 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
.
Ответ 2
Это работает для меня:
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"
)
Ответ 3
Я столкнулся с похожими проблемами и попробовал ваши методы выше. Однако я получил следующие предупреждения...
[warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings.
[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn] * io.netty:netty:3.9.9.Final is selected over {3.6.2.Final, 3.7.0.Final}
[warn] +- org.apache.spark:spark-core_2.11:2.4.4 (depends on 3.9.9.Final)
[warn] +- org.apache.zookeeper:zookeeper:3.4.6 (depends on 3.6.2.Final)
[warn] +- org.apache.hadoop:hadoop-hdfs:2.6.5 (depends on 3.6.2.Final)
[warn] * com.google.guava:guava:11.0.2 is selected over {12.0.1, 16.0.1}
[warn] +- org.apache.hadoop:hadoop-yarn-client:2.6.5 (depends on 11.0.2)
[warn] +- org.apache.hadoop:hadoop-yarn-api:2.6.5 (depends on 11.0.2)
[warn] +- org.apache.hadoop:hadoop-yarn-common:2.6.5 (depends on 11.0.2)
[warn] +- org.apache.hadoop:hadoop-yarn-server-nodemanager:2.6.5 (depends on 11.0.2)
[warn] +- org.apache.hadoop:hadoop-yarn-server-common:2.6.5 (depends on 11.0.2)
[warn] +- org.apache.hadoop:hadoop-hdfs:2.6.5 (depends on 11.0.2)
[warn] +- org.apache.curator:curator-framework:2.6.0 (depends on 16.0.1)
[warn] +- org.apache.curator:curator-client:2.6.0 (depends on 16.0.1)
[warn] +- org.apache.curator:curator-recipes:2.6.0 (depends on 16.0.1)
[warn] +- org.apache.hadoop:hadoop-common:2.6.5 (depends on 16.0.1)
[warn] +- org.htrace:htrace-core:3.0.4 (depends on 12.0.1)
Есть идеи, как решить? Я загрузил последнюю версию пакета Spark 2.4.4
, используя Hortonworks Sandbox 3.0
, sbt 1.3.3
и scala 2.11.12
. Большое спасибо!