Apache kafka Kafka在Spark Streaming中创建DirectStream
我正在尝试来自的示例代码。代码可以运行没有任何错误,但我无法接收任何记录。如果我从一开始就运行kafka-console-consumer.sh,我可以获得记录。有人知道原因吗?我的代码如下:Apache kafka Kafka在Spark Streaming中创建DirectStream,apache-kafka,spark-streaming,spark-streaming-kafka,Apache Kafka,Spark Streaming,Spark Streaming Kafka,我正在尝试来自的示例代码。代码可以运行没有任何错误,但我无法接收任何记录。如果我从一开始就运行kafka-console-consumer.sh,我可以获得记录。有人知道原因吗?我的代码如下: val broker = "221.181.73.44:19092" val topics = Array("connect-test") val groupid = "SparkStreamingLoad3" val kafkaParams = Map[String, Object]( "boots
val broker = "221.181.73.44:19092"
val topics = Array("connect-test")
val groupid = "SparkStreamingLoad3"
val kafkaParams = Map[String, Object](
"bootstrap.servers" -> broker,
"group.id" -> groupid,
"key.deserializer" -> classOf[StringDeserializer],
"value.deserializer" -> classOf[StringDeserializer],
"auto.offset.reset" -> "earliest", //earliest | latest
"enable.auto.commit" -> (false: java.lang.Boolean)
)
val stream = KafkaUtils.createDirectStream[String, String](ssc, PreferConsistent, Subscribe[String, String](topics, kafkaParams))
stream.print()
ssc.start()
ssc.awaitTermination()
我的SBT构建是:
version := "1.0"
scalaVersion := "2.10.6"
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-streaming-kafka-0-10_2.10" % "2.1.0",
"org.apache.spark" % "spark-core_2.10" % "2.1.0",
"org.apache.spark" % "spark-streaming_2.10" % "2.1.0",
"org.apache.kafka" % "kafka_2.10" % "0.10.2.1"
)
谢谢
val broker = "221.181.73.44:19092"
默认端口是9092,这可能是问题所在
auto.offset.reset->earlime和enable.auto.commit->false应始终使您从主题日志的开头开始读取,因为您的偏移量不会存储在任何位置。所以这没有问题
另外,我们可以看到您对kafka-console-consumer.sh使用的完整命令吗?最后,我解决了这个问题。答案如下: 主题中的数据由console producer生成,console producer是一个字符串列表。但是,数据的格式为[Array[Byte],Array[Byte]]。不是[字符串,字符串]。所以,如果我使用StringDeserializer,将不会收到任何数据 我从控制台了解到消费者源代码writeToconsumerRecord:ConsumerRecord[Array[Byte],Array[Byte]],output:PrintStream:Unit RDD中的键/值可能包含空值。在我的例子中,所有键都是空的。我使用以下代码获取数据: stream=KafkaUtils.createDirectStream[Array[Byte],Array[Byte]]ssc,PreferConsistent,Subscribe[Array[Byte],Array[Byte]]主题,kafkaParams
stream.maprdd=>new StringOptionrdd.key.getOrElsenull.getBytes+| | | | | | | | | | | |+new StringOptionrdd.value.getOrElsenull.getBytes.print您运行的卡夫卡也是0.10.x版本吗?服务器上运行的卡夫卡版本是0.10.2.1。在libs文件夹中,我有kafka_2.10-0.10.2.1.*文件。版本与SBT生成配置相同。您如何检查流中数据的真实格式?