Как прочитать данные в теме кафки в СДР, указав начальное и конечное смещения?
KafkaUtils.createRDD
означает , был экспериментальным, и API довольно неприятен (он возвращает большой раздутый класс Java ConsumerRecord
, который даже не сериализуется, и помещает его в KafkaRDD
, который переопределяет много методы (например, persist), чтобы просто выдать исключение.
То, что я хотел бы, это простой API, подобный этому:
case class Message(key: String,
value: String,
offset: Long,
timestamp: Long)
def readKafka(topic: String, offsetsByPartition: Map[Int, (Long, Long)])
(config: KafkaConfig, sc: SparkContext): RDD[Message]
или что-то подобное, где key: Array[Byte]
и value: Array[Byte]