【发布时间】:2016-09-29 02:31:06
【问题描述】:
我正在为流处理设置风暴,我的 trident spout 正在从 kafka 主题中获取数据,但是我在从 kafka 获取消息时不断收到 BufferUnderFlowException:
java.lang.RuntimeException: java.lang.RuntimeException: java.nio.BufferUnderflowException 在 backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:128) ~[storm-core-0.9.5.jar:0.9.5] 在 backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:99) ~[storm-core-0.9.5.jar:0.9.5] 引起:java.lang.RuntimeException: java.nio.BufferUnderflowException 在storm.kafka.KafkaUtils.fetchMessages(KafkaUtils.java:177)~[stormjar.jar:na] 在storm.kafka.trident.TridentKafkaEmitter.fetchMessages(TridentKafkaEmitter.java:132)~[stormjar.jar:na] 在storm.kafka.trident.TridentKafkaEmitter.doEmitNewPartitionBatch(TridentKafkaEmitter.java:113)~[stormjar.jar:na]
原因:java.nio.BufferUnderflowException: null 在 java.nio.HeapByteBuffer.get(HeapByteBuffer.java:151) ~[na:1.8.0_05] 在 java.nio.ByteBuffer.get(ByteBuffer.java:715) ~[na:1.8.0_05] 在 kafka.api.ApiUtils$.readShortString(ApiUtils.scala:40) ~[stormjar.jar:na]
我用的storm版本是0.9.5,kafka有2.11版本。我无法理解是什么在这里造成了问题。
【问题讨论】:
-
您确定对生产者和拓扑中的消息和密钥使用相同的序列化器和反序列化器吗?
-
谢谢@ChrisGerken,这真的解决了我的问题:)
标签: apache-kafka apache-storm trident