问题
so i updated according to some suggestions. but the streams application terminates after some time. without performing. no error in below code shown by ide. at last i'm sending data to topic as key equals string and value as a json object. still not working.
i guess its a line or something but not sure if im right. please. also attached the error screenshot below.
Serializer<JsonNode> jsonSerializer = new JsonSerializer();
Deserializer<JsonNode> jsonDeserializer = new JsonDeserializer();
Serde<JsonNode> jsonSerde = Serdes.serdeFrom(jsonSerializer, jsonDeserializer);
JSONObject jsnObj = new JSONObject();
......(word count manipulationover part over here)
KTable<Windowed<String>, Long> Ttable = TgroupedStream
.windowedBy(TimeWindows.of(Duration.ofMinutes(5)))
.count();
Ttable
.toStream()
.selectKey((key, word) -> key.key())
.map((key, value) -> {
JSONParser par = new JSONParser();
StringWriter sw = new StringWriter();
KeyValue<String, JsonNode> kv = null;
try {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree("{ \"word\": \"" + key + "\" \",\" count: \"" + value + "\" }");
KeyValue.pair(key.concat("s"), jsonNode);
kv = KeyValue.pair(key.concat("s"), jsonNode);
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return kv;
}
)
.to("badliar", Produced.with(Serdes.String(), jsonSerde));
KafkaStreams streams = new KafkaStreams(builder.build(), streamsConfiguration);
streams.start();
Runtime.getRuntime().addShutdownHook(new Thread(streams::close));
}
回答1:
You're consuming a key-value pair containing the exact data you want. You dont need to parse anything, just create the JsonNode and return it.
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);
})
You can also use mapValues
instead of map
if you aren't modifying the key
来源:https://stackoverflow.com/questions/64700833/i-have-a-kafka-pipeline-json-problem-update-for-kafka-connect