Перекрестные версии конфликтов с Spark и Azure-Cosmosdb - PullRequest
0 голосов
/ 24 мая 2018

Я бился головой об этом некоторое время, и я официально застрял.Я пытаюсь скомпилировать jar-файл, содержащий простое задание scala / spark, которое выполняется на блоках данных Azure, включая зависимость от CosmosDB.При импорте azure-cosmosdb-spark возникают конфликтующие кросс-версии ошибок во время компиляции, которые, как я полагаю, являются результатом некоторой переходной зависимости.Я пробовал несколько разных версий spark и scala, но не помог, и сообщения об ошибках не говорят много.

Мой минимальный пример для воспроизведения ошибки - просто build.sbt, в настоящий момент классы scala не компилируются.Ниже приведен пример моего build.sbt:

name := "ranchero"

version := "0.0.1"

scalaVersion := "2.11.8"
val sparkVersion = "2.2.0"

// additional libraries
libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % sparkVersion % "provided",
  "org.apache.spark" %% "spark-sql" %  sparkVersion % "provided",
  "org.apache.spark" %% "spark-mllib" % sparkVersion % "provided",
  "joda-time" % "joda-time" % "2.9.9",
  "org.scalatest" %% "scalatest" % "3.0.0" % "test",
  "com.microsoft.azure" % "azure-cosmosdb-spark_2.2.0_2.11" % "1.1.0"
)


resolvers ++= Seq(
  "apache-snapshots" at "http://repository.apache.org/snapshots/",
  "Maven central" at "http://repo1.maven.org/maven2/",
 )

, если я закомментирую зависимость от cosmosdb, все будет хорошо скомпилировано.После добавления этого депозита я получаю сообщения об ошибках:

[error] Modules were resolved with conflicting cross-version suffixes in {file:/home/*******/development/ranchero/}ranchero:
[error]    org.apache.spark:spark-launcher _2.10, _2.11
[error]    org.json4s:json4s-ast _2.10, _2.11
[error]    org.apache.spark:spark-network-shuffle _2.10, _2.11
[error]    com.twitter:chill _2.10, _2.11
[error]    org.json4s:json4s-jackson _2.10, _2.11
[error]    com.fasterxml.jackson.module:jackson-module-scala _2.10, _2.11
[error]    org.json4s:json4s-core _2.10, _2.11
[error]    org.apache.spark:spark-unsafe _2.10, _2.11
[error]    org.apache.spark:spark-core _2.10, _2.11
[error]    org.apache.spark:spark-network-common _2.10, _2.11
[error] java.lang.RuntimeException: Conflicting cross-version suffixes in: org.apache.spark:spark-launcher, org.json4s:json4s-ast, org.apache.spark:spark-network-shuffle, com.twitter:chill, org.json4s:json4s-jackson, com.fasterxml.jackson.module:jackson-module-scala, org.json4s:json4s-core, org.apache.spark:spark-unsafe, org.apache.spark:spark-core, org.apache.spark:spark-network-common

, что, к сожалению, не очень помогает.Любые предложения о том, как исправить это?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Хотя я согласен с обработкой версии Scala через %%, в моем случае этого оказалось недостаточно.Наконец-то мне удалось заставить его работать, вручную исключив нарушающие зависимости из библиотеки CosmosDB

"com.microsoft.azure" %% "azure-cosmosdb-spark_2.2.0" % "1.1.1"
   exclude ("org.apache.spark", "spark-launcher_2.10")
   exclude ("org.json4s", "json4s-ast_2.10")
   exclude ("org.apache.spark", "spark-network-shuffle_2.10")
   exclude ("com.twitter", "chill_2.10")
   exclude ("org.json4s", "json4s-jackson_2.10")
   exclude ("com.fasterxml.jackson.module", "jackson-module-scala_2.10")
   exclude ("org.json4s", "json4s-core_2.10")
   exclude ("org.apache.spark", "spark-unsafe_2.10")
   exclude ("org.apache.spark", "spark-core_2.10")
   exclude ("org.apache.spark", "spark-network-common_2.10")

Это предполагает, что вы используете Scala 2.11 в своем проекте.У меня нет объяснения, почему это необходимо.Может быть, библиотека 2.11 CosmosDB на Maven по какой-то причине связана с зависимостями 2.10 ...

0 голосов
/ 24 мая 2018

Пусть sbt обрабатывает версию scala для всех зависимостей.Попробуйте заменить зависимость azure-cosmosdb следующим образом:

"com.microsoft.azure" %% "azure-cosmosdb-spark_2.2.0" % "1.1.0"

Двойной процент скажет sbt обработать тег версии scala для зависимостей.По крайней мере, оболочка sbt начинается с исправленного build.sbt.

...