Java 我有一个用于kafka connect的kafka管道(json问题更新)

Java 我有一个用于kafka connect的kafka管道(json问题更新),java,json,apache-kafka,apache-kafka-streams,Java,Json,Apache Kafka,Apache Kafka Streams,所以我根据一些建议进行了更新。但是streams应用程序在一段时间后终止。没有表演。ide显示的以下代码中没有错误。最后,我将数据作为key=string和value作为json对象发送到topic。仍然不起作用 我猜是一句台词什么的,但不确定我是不是对的。请还附上了下面的错误截图 Serializer jsonSerializer=new jsonSerializer(); 反序列化程序jsonDeserializer=新的jsonDeserializer(); Serde-jsonSerd

所以我根据一些建议进行了更新。但是streams应用程序在一段时间后终止。没有表演。ide显示的以下代码中没有错误。最后,我将数据作为key=string和value作为json对象发送到topic。仍然不起作用

我猜是一句台词什么的,但不确定我是不是对的。请还附上了下面的错误截图

Serializer jsonSerializer=new jsonSerializer();
反序列化程序jsonDeserializer=新的jsonDeserializer();
Serde-jsonSerde=Serdes.serdeFrom(jsonSerializer,jsonSerializer);
JSONObject jsnObj=新的JSONObject();
……(这里的文字计数操作部分)
KTable Ttable=TgroupedStream
.windowedBy(时间窗的持续时间(5)))
.count();
塔布尔
.toStream()
.selectKey((key,word)->key.key())
.map((键、值)->{
JSONPARSER PAR =新JSONPARSER();
StringWriter sw=新的StringWriter();
键值kv=null;
试一试{
ObjectMapper ObjectMapper=新的ObjectMapper();
JsonNode JsonNode=objectMapper.readTree(“{\'word\':\”“+key+“\”,\“count:\”“+value+“\”}”);
key.value.pair(key.concat(“s”)、jsonNode);
kv=KeyValue.pair(key.concat(“s”),jsonNode);
}捕获(JsonMappingException e){
e、 printStackTrace();
}捕获(JsonProcessingException e){
e、 printStackTrace();
}
返回千伏;
}
)
.to(“badliar”,产生于.with(Serdes.String(),jsonSerde));
KafkaStreams streams=新的KafkaStreams(builder.build(),streams配置);
streams.start();
Runtime.getRuntime().addShutdownHook(新线程(streams::close));
}

您正在使用一个包含所需确切数据的键值对。您不需要解析任何东西,只需创建JsonNode并返回它

final ObjectMapper mapper = new ObjectMapper();

Ttable
        .toStream()
        .selectKey((key, word) -> key.key())
        .map((key, value) -> {
             ObjectNode rootNode = mapper.createObjectNode();

             rootNode.put("word", key);
             rootNode.put("count", value);
                        
             return new KeyValue.pair(key, jsonNode);           
        })
如果不修改键,也可以使用
mapValues
而不是
map

final ObjectMapper mapper = new ObjectMapper();

Ttable
        .toStream()
        .selectKey((key, word) -> key.key())
        .map((key, value) -> {
             ObjectNode rootNode = mapper.createObjectNode();

             rootNode.put("word", key);
             rootNode.put("count", value);
                        
             return new KeyValue.pair(key, jsonNode);           
        })