Производитель Kafka возвращает Java Future (или вы можете использовать обратный вызов) в любом случае, в моей искровой работе я хочу убедиться, что все отправлено правильно и что оно идет быстро.
Использование:
rdd.foreach { msg =>
kafkaProducer.send(msg).get() //wait for the future to complete
}
не очень хорошо работает.
Я думал об использовании
rdd.repartition(20).foreachPartition { iterator =>
iterator.foreach { msg =>
kafkaProducer.send(msg).get()
}
}
Мой вопрос, однако, будет ли foreachPartition работать параллельно? Трудно увидеть из написанного мною простого теста, поскольку кажется, что содержимое foreachPartition запускается из одного потока. Но я не знаю, зависит ли это от моей настройки теста ...