kafka开发过程报java.lang.IndexOutOfBoundsException
Exception in thread "wordcount-a57fafd2-4bb5-42e1-939a-70ebb0eeddea-StreamThread-1" java.lang.IndexOutOfBoundsException
at java.nio.Buffer.checkIndex(Buffer.java:546)
at java.nio.HeapByteBuffer.getLong(HeapByteBuffer.java:416)
at org.apache.kafka.streams.state.internals.SessionKeySchema.extractWindow(SessionKeySchema.java:130)
at org.apache.kafka.streams.state.internals.SessionKeySchema.from(SessionKeySchema.java:144)
at org.apache.kafka.streams.state.internals.SessionKeySchema$1.hasNext(SessionKeySchema.java:86)
at org.apache.kafka.streams.state.internals.SegmentIterator.hasNextConditionHasNext(SegmentIterator.java:89)
at org.apache.kafka.streams.state.internals.SegmentIterator.hasNext(SegmentIterator.java:69)
at org.apache.kafka.streams.state.internals.WrappedSessionStoreIterator.hasNext(WrappedSessionStoreIterator.java:72)
at org.apache.kafka.streams.state.internals.AbstractMergedSortedCacheStoreIterator.hasNext(AbstractMergedSortedCacheStoreIterator.java:69)
at org.apache.kafka.streams.state.internals.MeteredWindowedKeyValueIterator.hasNext(MeteredWindowedKeyValueIterator.java:52)
at org.apache.kafka.streams.kstream.internals.KStreamSessionWindowAggregate$KStreamSessionWindowAggregateProcessor.process(KStreamSessionWindowAggregate.java:112)
at org.apache.kafka.streams.processor.internals.ProcessorNode$1.run(ProcessorNode.java:50)
at org.apache.kafka.streams.processor.internals.ProcessorNode.runAndMeasureLatency(ProcessorNode.java:244)
at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:133)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:143)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:126)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:90)
at org.apache.kafka.streams.processor.internals.SourceNode.process(SourceNode.java:87)
at org.apache.kafka.streams.processor.internals.StreamTask.process(StreamTask.java:288)
at org.apache.kafka.streams.processor.internals.AssignedStreamsTasks.process(AssignedStreamsTasks.java:94)
at org.apache.kafka.streams.processor.internals.TaskManager.process(TaskManager.java:409)
at org.apache.kafka.streams.processor.internals.StreamThread.processAndMaybeCommit(StreamThread.java:957)
at org.apache.kafka.streams.processor.internals.StreamThread.runOnce(StreamThread.java:832)
at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:767)
at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:736)
原因:
引起这个错误的原因可能是由于在复制kafka配置的时候,没有将application_id重写,或者是之前出现过,反正总而言之就是application_id重复了
我发现此参考文献建议您不能application.id
用于多个主题,但是我发现很难找到支持该主题的参考文档。application.id
状态文档:
流处理应用程序的标识符。在Kafka集群中必须唯一。它用作1)默认客户端ID前缀,2)成员资格管理的组ID,3)changelog主题前缀。
解决:
修改application_id
prop.put_(StreamsConfig.APPLICATION_ID_CONFIG,“sessionwindow”)_;