Spark - 获取Kafka的最早和最新偏移量而无需打开流

时间:2017-06-26 08:26:00

标签: scala apache-spark apache-kafka

我目前正在使用spark-streaming-kafka-0-10_2.11将我的spark应用程序与kafka队列连接起来。 Streams一切正常。但是对于特定场景,我只需要kafka队列的整个内容一次 - 为此我得到了更好地使用KafkaUtils.createRDDSparkStreaming: Read Kafka Stream and provide it as RDD for further processing)的建议

然而对于spark-streaming-kafka-0-10_2.11,我无法弄清楚如何获得我的Kafka主题的最早和最新偏移量,以创建我必须使用createRDD方法的偏移范围。

在不打开流的情况下获取这些偏移量的推荐方法是什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

在阅读了几个讨论之后,我能够通过以下方式从特定分区获得最早或最新的偏移量:

val consumer = new SimpleConsumer(host,port,timeout,bufferSize,"offsetfetcher");
val topicAndPartition = new TopicAndPartition(topic, initialPartition)
val request = OffsetRequest(Map(topicAndPartition -> PartitionOffsetRequestInfo(OffsetRequest.EarliestTime,1)))
val offsets = consumer.getOffsetsBefore(request).partitionErrorAndOffsets(topicAndPartition).offsets

return offsets.head

但是,如何在kafka_consumer.sh CLI命令中复制“from_beginning”的行为是KafkaUtils.createRDD aproach所不知道的。