scala - 如何从 Spark Streaming 开始从 Kafka 主题读取记录?

标签 scala apache-spark apache-kafka spark-streaming

我正在尝试使用 Spark Streaming 从 Kafka 主题中读取记录。

这是我的代码:

object KafkaConsumer {

  import ApplicationContext._

  def main(args: Array[String]) = {

    val kafkaParams = Map[String, Object](
      "bootstrap.servers" -> "localhost:9092",
      "key.deserializer" -> classOf[StringDeserializer],
      "value.deserializer" -> classOf[StringDeserializer],
      "group.id" -> s"${UUID.randomUUID().toString}",
      "auto.offset.reset" -> "earliest",
      "enable.auto.commit" -> (false: java.lang.Boolean)
    )

    val topics = Array("pressure")
    val stream = KafkaUtils.createDirectStream[String, String](
      streamingContext,
      PreferConsistent,
      Subscribe[String, String](topics, kafkaParams)
    )
    stream.print()
    stream.map(record => (record.key, record.value)).count().print()
    streamingContext.start()
  }
}

当我运行它时它什么也不显示。

检查 pressure 中是否确实存在数据主题,我使用了命令行方法,它确实显示了记录:
bin/kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic pressure \
  --from-beginning

输出:
TimeStamp:07/13/16 15:20:45:226769,{'Pressure':'834'}
TimeStamp:07/13/16 15:20:45:266287,{'Pressure':'855'}
TimeStamp:07/13/16 15:20:45:305694,{'Pressure':'837'}

怎么了?

最佳答案

你失踪了 streamingContext.awaitTermination() .

关于scala - 如何从 Spark Streaming 开始从 Kafka 主题读取记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40826020/

相关文章:

r - 使用 MongoDB 和 RStudio 的 SparkR 2.x 应用程序

java - 将spark sql 2.4.4数据帧中的Avro类型消息生成到Kafka

apache-kafka - 无法在 Kafka 中使用来自远程计算机的消息

Scala:不建议使用 `-` [dash,减号]命令,而建议使用 `onFailure`,并将在0.14.0中将其删除

scala - 类型参数不能在 Scala 的函数体中引用?

scala - 为什么 sbt 会为 AutoPlugin 报告 "error: ' .' expected but eof found."?

apache-spark - Spark 数据帧 : registerTempTable vs not

scala - 从Kafka上的JSON消息在Spark流中创建Spark DataFrame

node.js - 类型错误 : Client is not a constructor - error at the latest version of kafka-node

使用 Squeryl 的持久存储中的 Scala 不变性