У меня есть этот простой Кафка потокКафка directstream dstream карта не печатает
val messages = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicsSet)
// Each Kafka message is a flight
val flights = messages.map(_._2)
flights.foreachRDD(rdd => {
println("--- New RDD with " + rdd.partitions.length + " partitions and " + rdd.count() + " flight records");
rdd.map { flight => {
val flightRows = FlightParser.parse(flight)
println ("Parsed num rows: " + flightRows)
}
}
})
ssc.start()
ssc.awaitTermination()
Кафки сообщение, Спарк Streaming он в состоянии получить их как РД. Но второй println в моем коде ничего не печатает. я смотрел журналы журналов драйверов при запуске в локальном режиме [2], проверял журналы нитей при запуске в режиме «пряжа-клиент».
Что мне не хватает?
Вместо rdd.map, следующий код печатает хорошо в консоли водителя искры:
for(flight <- rdd.collect().toArray) {
val flightRows = FlightParser.parse(flight)
println ("Parsed num rows: " + flightRows)
}
Но я боюсь, что обработка этого объекта полета может произойти в проекте водителя искры, а не исполнитель. Пожалуйста, поправьте меня, если я ошибаюсь.
Благодаря
Вы посмотрели журналы работника * исполнителя *? Возможно, он не нашел ваш класс FlightParser? –