Почему sbt не может найти KafkaUtils? - PullRequest
0 голосов
/ 11 января 2019

У меня есть эта ошибка в моем коде (wordCount от Kafka), скомпилированном с SBT

[error] /home/hduser/sbt_project/project1/src/main/scala/sparkKafka.scala:4:35:            object kafka is not a member of package org.apache.spark.streaming`
[error] import org.apache.spark.streaming.kafka.KafkaUtils
 not found: value KafkaUtils
[error] val lines = KafkaUtils.createStream(ssc, "localhost:2181", "spark-stream           ing-consumer-group", Map("customer" -> 2))

Файл build.sbt содержит следующие зависимости:

libraryDependencies += "org.apache.spark" % "spark-core_2.12" % "2.4.0"
libraryDependencies += "org.apache.spark" % "spark-streaming_2.12" % "2.4.0"
libraryDependencies += "org.apache.spark" % "spark-streaming-kafka-0-10_2.12" % "2.4.0"

Как правильно импортировать KafkaUtils?

1 Ответ

0 голосов
/ 12 января 2019

KafkaUtils находится в пакете org.apache.spark.streaming.kafka010 (обратите внимание, что пространство имен для импорта включает версию kafka010).

С Документация Kafka для потоковой передачи искр :

import org.apache.spark.streaming.kafka010._
// ...

// val streamingContext = ...

val kafkaParams = Map[String, Object](
  "bootstrap.servers" -> "localhost:9092",
  "key.deserializer" -> classOf[StringDeserializer],
  "value.deserializer" -> classOf[StringDeserializer],
  "group.id" -> "use_a_separate_group_id_for_each_stream",
  "auto.offset.reset" -> "latest",
  "enable.auto.commit" -> (false: java.lang.Boolean)
)

val topics = Array("topicA", "topicB")
val stream = KafkaUtils.createDirectStream[String, String](
  streamingContext,
  PreferConsistent,
  Subscribe[String, String](topics, kafkaParams)
)

Примечание. Обычно рекомендуется использовать Spark Structured Streaming с Kafka .

...