как избежать зависимости загрузки в spark-streaming и kafka? - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь получить пример работы kafka и spark-streaming, и у меня возникают проблемы при запуске процесса.

это исключение:

[ошибка] Причина: com.fasterxml.jackson.databind.JsonMappingException: несовместимая версия Джексона: 2.9.8

Это build.sbt:

name := "SparkJobs"

version := "1.0"

scalaVersion := "2.11.6"

val sparkVersion = "2.4.1"

val flinkVersion = "1.7.2"

resolvers ++= Seq(
"Typesafe Releases" at "http://repo.typesafe.com/typesafe/releases/",
"apache snapshots" at "http://repository.apache.org/snapshots/",
"confluent.io" at "http://packages.confluent.io/maven/",
"Maven central" at "http://repo1.maven.org/maven2/"
)

libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % sparkVersion,
"org.apache.spark" %% "spark-sql" % sparkVersion,
"org.apache.spark" %% "spark-streaming" % sparkVersion,
"org.apache.spark" %% "spark-streaming-kafka-0-10" % sparkVersion,
"org.apache.spark" %% "spark-hive" % sparkVersion

// ,"org.apache.flink" %% "flink-connector-kafka-0.10" % flinkVersion
, "org.apache.kafka" %% "kafka-streams-scala" % "2.2.0"
// , "io.confluent" % "kafka-streams-avro-serde" % "5.2.1"
)

//excludeDependencies ++= Seq(
// commons-logging is replaced by jcl-over-slf4j
//  ExclusionRule("jackson-module-scala", "jackson-module-scala")
//
)

Это код

Выполнение дерева зависимостей sbt Я вижу, что spark-core_2.11-2.4.1.jar имеет jackson-databind-2.6.7.1,и это говорит мне, что оно выселено 2.9.8 version, что предполагает наличие конфликта между библиотеками, но spark-core_2.11-2.4.1.jar не единственный, kafka-streams-scala_2.11:2.2.0 использует версию jackson-databind-2.9.8, поэтому я не знаюкакая библиотека должна выселить jackson-databind-2.9.8. Spark-core / kafka-streams-scala?или оба?

Как мне избежать Джексона library version 2.9.8, чтобы запустить эту задачу?

Я предполагаю, что мне нужно jackson-databind-2.6.7 version ...

ОБНОВЛЕНИЕ с советами.Все еще не работает.

Я удалил зависимости kafka-stream-scala, который пытается использовать Джексон 2.9.8, используя этот build.sbt

name := "SparkJobs"

version := "1.0"

scalaVersion := "2.11.6"

val sparkVersion = "2.4.1"

val flinkVersion = "1.7.2"

val kafkaStreamScala = "2.2.0"

resolvers ++= Seq(
"Typesafe Releases" at "http://repo.typesafe.com/typesafe/releases/",
"apache snapshots" at "http://repository.apache.org/snapshots/",
"confluent.io" at "http://packages.confluent.io/maven/",
"Maven central" at "http://repo1.maven.org/maven2/"
)


libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % sparkVersion ,
"org.apache.spark" %% "spark-sql" % sparkVersion,
"org.apache.spark" %% "spark-streaming" % sparkVersion,
"org.apache.spark" %% "spark-streaming-kafka-0-10" % sparkVersion,
"org.apache.spark" %% "spark-hive" % sparkVersion

)

Но я получил новый исключение

ОБНОВЛЕНИЕ 2

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

1 Ответ

1 голос
/ 03 апреля 2019

Kafka Streams включает в себя Джексона 2,9,8

Но вам это не нужно, если вы используете Spark Streaming Kafka Integration, поэтому вам действительно нужно просто удалить его.

Аналогично, kafka-streams-avro-serde - это не то, что вы хотите использовать со Spark, скорее, вместо этого вы можете найти AbraOSS / ABRiS .

...