[ https://issues.apache.org/jira/browse/KAFKA-3801?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15325209#comment-15325209 ]
Guozhang Wang commented on KAFKA-3801: -------------------------------------- I think a general question here, that we are considering, is whether we could make it more flexible for users to apply some stateless processing operators on the raw key-value pair in byte arrays before deserializing (today we ALWAYS deserialize first, partially because we need to extract the timestamp), so that for example in your case you can {{branch}} the stream to two streams for checkpoint / data only. But this may need to be done as a more comprehensive story. As for your case specifically, for now you can still just call {{Serdes.Long().serializer.serialize()}} in mapValues. > Provide static serialize() and deserialize() for use as method references > ------------------------------------------------------------------------- > > Key: KAFKA-3801 > URL: https://issues.apache.org/jira/browse/KAFKA-3801 > Project: Kafka > Issue Type: Improvement > Components: clients, streams > Reporter: Jeff Klukas > Assignee: Guozhang Wang > Priority: Minor > Fix For: 0.10.1.0 > > > While most calls to {{Serializer.serialize}} and {{Deserializer.deserialize}} > are abstracted away in Kafka Streams through the use of `Serdes` classes, > there are some instances where developers may want to call them directly. The > serializers and deserializers for simple types don't require any > configuration and could be static, but currently it's necessary to create an > instance to use those methods. > I'd propose moving serialization logic into a {{static public byte[] > serialize(? data)}} method and deserialization logic into a {{static public ? > deserialize(byte[] data)}} method. The existing instance methods would simply > call the static versions. > See a full example for LongSerializer and LongDeserializer here: > https://github.com/apache/kafka/compare/trunk...jklukas:static-serde-methods?expand=1 > In Java 8, these static methods then become available for method references > in code like {{kstream.mapValues(LongDeserializer::deserialize)}} without the > user needing to create an instance of {{LongDeserializer}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)