来自Kafka的Spark Streaming不会在控制台上产生输出

时间:2017-05-25 10:27:07

标签: spark-streaming kafka-producer-api

我有下面的代码,它将听取kafka主题并使用spark streaming重现文本。但是,我无法在控制台上看到该文本。我没有在控制台上收到任何错误消息。我可能错了,但我希望kafka主题的文本显示在控制台上。

object scalaSparkProcessor {
 def main(args: Array[String]) {
  if (args.length < 3) {
     System.err.println("Usage: scalaSparkProcessor <zkQuorum> topics> <numThreads>")
     System.exit(1)
  }

  val Array(zkQuorum, topics, numThreads) = args
  val sparkConf = new SparkConf().setAppName("scalaSparkProcessor")
  val ssc = new StreamingContext(sparkConf, Seconds(5))
  ssc.checkpoint("checkpoint")

  val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap

  val lines = KafkaUtils.createStream(ssc,zkQuorum,"spark-streaming-consumer", topicMap).map(_._2)

  lines.foreachRDD{rdd =>
  rdd.foreach { println }}     

  ssc.start()
  ssc.awaitTermination()
 }
}

2 个答案:

答案 0 :(得分:0)

请注意,{{1}}代码在执行程序上运行,因此您应该在执行程序控制台输出中看到输出。 因此,如果您转到spark UI,导航到执行程序选项卡,并选择执行程序,您应该能够在那里看到输出。

E.g。如果您在本地运行该作业,则可以转到lock virtual memory。 如果您在纱线上运行,则可以通过纱线ResourceManager UI导航到spark UI。

答案 1 :(得分:0)

在代码中进行以下调整:

lines.foreachRDD{
 rdd =>
  rdd.collect().foreach(println)
 }