Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 卡夫卡拖缆:用户定义的问题';塞尔德斯';_Java_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Java 卡夫卡拖缆:用户定义的问题';塞尔德斯';

Java 卡夫卡拖缆:用户定义的问题';塞尔德斯';,java,apache-kafka,apache-kafka-streams,Java,Apache Kafka,Apache Kafka Streams,我使用Confluent-3.2.1作为卡夫卡流光。我正在尝试将我的KGroupedStream聚合到KTable。在使用聚合时,我还使用了TimeWindows.of(TimeUnit.SECONDS.toMillis(5))。我使用用户定义的“Serdes”作为聚合的参数。用户定义“Serdes”的代码为 Map serdeProps=newhashmap(); final Serializer pageViewSerializer=新的JsonPOJOSerializer(); serde

我使用Confluent-3.2.1作为卡夫卡流光。我正在尝试将我的
KGroupedStream
聚合到
KTable
。在使用聚合时,我还使用了
TimeWindows.of(TimeUnit.SECONDS.toMillis(5))
。我使用用户定义的“Serdes”作为聚合的参数。用户定义“Serdes”的代码为

Map serdeProps=newhashmap();
final Serializer pageViewSerializer=新的JsonPOJOSerializer();
serdeProps.put(“JsonPOJOClass”,MsgAggr.class);
配置(serdeProps,false);
最终反序列化程序pageViewDeserializer=新的JsonPOJODeserializer();
serdeProps.put(“JsonPOJOClass”,MsgAggr.class);
配置(serdeProps,false);
final Serde pageViewSerde=Serdes.serdeFrom(pageViewSerializer,pageViewDeserializer)`
流媒体的代码是

KGroupedStream msg\u grp=message
.groupByKey();
KTable msg\u win=msg\u grp
//.reduce(新的Reduced(),arg1,arg2);
.aggregate(新的Init(),
新的Aggr(),
TimeWindows.of(TimeUnit.SECONDS.toMillis(5)),
pageViewSerde,
“MySample_out”);
当我运行代码时,我得到了错误:

[2017-05-23 18:16:45,648] ERROR stream-thread [StreamThread-1] Streams application error during processing:  (org.apache.kafka.streams.processor.internals.StreamThread:249)
java.lang.ClassCastException: my.kafka.strm.MyClass1 cannot be cast to java.lang.String
at org.apache.kafka.common.serialization.StringSerializer.serialize(StringSerializer.java:24)
at org.apache.kafka.streams.processor.internals.RecordCollectorImpl.send(RecordCollectorImpl.java:64)
at org.apache.kafka.streams.processor.internals.SinkNode.process(SinkNode.java:82)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:202)
at org.apache.kafka.streams.kstream.internals.KStreamFilter$KStreamFilterProcessor.process(KStreamFilter.java:44)
at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:82)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:202)
at org.apache.kafka.streams.kstream.internals.KStreamMap$KStreamMapProcessor.process(KStreamMap.java:43)
at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:82)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:202)
at org.apache.kafka.streams.processor.internals.SourceNode.process(SourceNode.java:66)
at org.apache.kafka.streams.processor.internals.StreamTask.process(StreamTask.java:180)
at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:436)
at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:242)
Exception in thread "StreamThread-1" java.lang.ClassCastException: my.kafka.strm.MyClass1 cannot be cast to java.lang.String
at org.apache.kafka.common.serialization.StringSerializer.serialize(StringSerializer.java:24)
at org.apache.kafka.streams.processor.internals.RecordCollectorImpl.send(RecordCollectorImpl.java:64)
at org.apache.kafka.streams.processor.internals.SinkNode.process(SinkNode.java:82)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:202)
at org.apache.kafka.streams.kstream.internals.KStreamFilter$KStreamFilterProcessor.process(KStreamFilter.java:44)
at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:82)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:202)
at org.apache.kafka.streams.kstream.internals.KStreamMap$KStreamMapProcessor.process(KStreamMap.java:43)
at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:82)
at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:202)
at org.apache.kafka.streams.processor.internals.SourceNode.process(SourceNode.java:66)
at org.apache.kafka.streams.processor.internals.StreamTask.process(StreamTask.java:180)
at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:436)
at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:242)

问题在于
message.groupByKey()。它使用字符串Serde作为自定义类
MyClass1
。请为
MyClass1
实现自定义序列化程序和反序列化程序,并在重载版本的
groupByKey
-

中使用相同的序列化程序和反序列化程序问题在于
message.groupByKey()。它使用字符串Serde作为自定义类
MyClass1
。请为
MyClass1
实现自定义序列化程序和反序列化程序,并在重载版本的
groupByKey
-

中使用它们。还有一个问题是关于事件时间窗口处理的。在聚合中,我使用的是TimeWindow。另外,我正在使用
streamsConfiguration.put(StreamsConfig.TIMESTAMP_EXTRACTOR_CLASS_CONFIG,myeventimeextractor.CLASS)从流中提取时间戳我想使用作为消息一部分的时间来控制窗口聚合。如何实现这一点?如果要使用卡夫卡的记录嵌入时间戳,则
MyEventTimeExtractor
实现可以使用
ConsumerRecord#timestamp
方法获取事件时间戳,您已经可以使用3个预定义的提取器:因此我不确定是否需要为这种情况实现您自己的提取器。如果您想从键或记录中提取时间戳,只需通过
#key()
和/或
#value()从给定的
消费者记录中访问日期
还有一个问题是关于事件时间窗口处理的。在聚合中,我使用的是TimeWindow。另外,我正在使用
streamsConfiguration.put(StreamsConfig.TIMESTAMP_EXTRACTOR_CLASS_CONFIG,myeventimeextractor.CLASS)从流中提取时间戳我想使用作为消息一部分的时间来控制窗口聚合。如何实现这一点?如果要使用卡夫卡的记录嵌入时间戳,则
MyEventTimeExtractor
实现可以使用
ConsumerRecord#timestamp
方法获取事件时间戳,您已经可以使用3个预定义的提取器:因此我不确定是否需要为这种情况实现您自己的提取器。如果您想从键或记录中提取时间戳,只需通过
#key()
和/或
#value()
从给定的
消费者记录中访问日期即可