我来自 java 背景和新的火花 . 大多数时候我逐行调试并检查通过每行代码发生的数据操作 .

最近我使用 Intellij IDE 开始使用scala开发 spark streaming app 并且遇到调试问题 .

在下面提供的示例spark WordCount代码中,我可以在初始应用程序启动期间点击断点,但是当我逐渐开始获得 Kafka messages 时,我看不到 break-point 正在为每条消息执行数据操作 .

I could not see runtime data values coming in for "lines" and "words" for every kafka message

不确定,如果这是调试您的spark应用程序和处理复杂数据操作的正确方法 . 请告知使用经典的brakpoint方法是否是调试spark代码的正确方法?

val messages = KafkaUtils.createDirectStream[String, String](
  ssc, LocationStrategies.PreferConsistent,
  ConsumerStrategies.Subscribe[String, String]
  (topicsSet, kafkaParams))

  // Get the lines, split them into words, count the words and print
  val lines = messages.map(_.value)
  val words = lines.flatMap(_.split(" "))

  words.print()

  ssc.start()
  ssc.awaitTermination()