2014-04-09 19 views
8

我試圖加載通過Apache卡夫卡數據不斷收到此錯誤:kafka.common.OffsetOutOfRangeException的意思

kafka.common.OffsetOutOfRangeException: offset 1003786 is out of range at kafka.log.Log$.findRange(Log.scala:46) at kafka.log.Log.read(Log.scala:264) at kafka.server.KafkaRequestHandlers.kafka$server$KafkaRequestHandlers$$readMessageSet(KafkaRequestHandlers.scala:112) at kafka.server.KafkaRequestHandlers$$anonfun$2.apply(KafkaRequestHandlers.scala:101) at kafka.server.KafkaRequestHandlers$$anonfun$2.apply(KafkaRequestHandlers.scala:100) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206) at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:34) at scala.collection.mutable.ArrayOps.foreach(ArrayOps.scala:34) at scala.collection.TraversableLike$class.map(TraversableLike.scala:206) at scala.collection.mutable.ArrayOps.map(ArrayOps.scala:34) at kafka.server.KafkaRequestHandlers.handleMultiFetchRequest(KafkaRequestHandlers.scala:100) at kafka.server.KafkaRequestHandlers$$anonfun$handlerFor$3.apply(KafkaRequestHandlers.scala:40) at kafka.server.KafkaRequestHandlers$$anonfun$handlerFor$3.apply(KafkaRequestHandlers.scala:40) at kafka.network.Processor.handle(SocketServer.scala:296) at kafka.network.Processor.read(SocketServer.scala:319) at kafka.network.Processor.run(SocketServer.scala:214) at java.lang.Thread.run(Thread.java:724)

是什麼例外意思,我該如何解決?

+1

運行$ KAFKA_ROOT_DIR/bin/kafka控制檯後的輸出是多少-consumer.sh --zookeeper xx.xx.xx.xx:2181 --topic _YOUR_TOPIC_ - from-beginning'命令..你看到任何消息嗎? – user2720864

回答

13

OffsetOutOfRangeException通常表示客戶端已經請求服務器上不再可用的範圍。
這可能會因爲主題日誌不再存在而基於您的Kafka設置中的保留策略。
如果您使用的是SimpleConsumer,則需要在代碼中處理OffsetOutOfRange異常。理想情況下,您的消費者應該發佈偏移請求以獲取服務器上當前可用的最新/最早的偏移量,然後在您的FetchRequest中使用此偏移量(作爲參數)