В kafka 0.10.x есть концепция Consumer Group, которая используется для отслеживания смещения сообщений.
Если вы установили enable.auto.commit = true и auto.offset.reset = latest, он не будет потребляться с начала. Теперь, используя этот подход, вам также может понадобиться отслеживать смещения, поскольку процесс может завершиться неудачей после потребления. Я бы посоветовал вам использовать этот метод, предложенный в Spark Docs для
stream.foreachRDD { rdd =>
val offsetRanges = rdd.asInstanceOf[HasOffsetRanges].offsetRanges
// some time later, after outputs have completed
stream.asInstanceOf[CanCommitOffsets].commitAsync(offsetRanges)
}
CanCommitOffsets находится в ваших руках, чтобы передать эти сообщения, когда ваш сквозной конвейер будет оправдан