[ https://issues.apache.org/jira/browse/KAFKA-3429?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15244771#comment-15244771 ]
Matthias J. Sax commented on KAFKA-3429: ---------------------------------------- [~guozhang] I am a little confused here: {{originalSerde}} is used to materialize {{table1}} after it got repartitioned using {{selector}}. Thus, key and value might have different types now and it is not ensured that {{serde}} can be reused. Or do I miss something here? (One more question: {{serde}} is for the key or for the value -- or does it refer to both) > Remove Serdes needed for repartitioning in KTable stateful operations > --------------------------------------------------------------------- > > Key: KAFKA-3429 > URL: https://issues.apache.org/jira/browse/KAFKA-3429 > Project: Kafka > Issue Type: Sub-task > Components: streams > Reporter: Guozhang Wang > Assignee: Matthias J. Sax > Labels: api, newbie++ > Fix For: 0.10.1.0 > > > Currently in KTable aggregate operations where a repartition is possibly > needed since the aggregation key may not be the same as the original primary > key, we require the users to provide serdes (default to configured ones) for > read / write to the internally created re-partition topic. However, these are > not necessary since for all KTable instances either generated from the topics > directly: > {code}table = builder.table(...){code} > or from aggregation operations: > {code}table = stream.aggregate(...){code} > There are already serde provided for materializing the data, and hence the > same serde can be re-used when the resulted KTable is involved in future > aggregation operations. For example: > {code} > table1 = stream.aggregateByKey(serde); > table2 = table1.aggregate(aggregator, selector, originalSerde, > aggregateSerde); > {code} > We would not need to require users to specify the "originalSerde" in > table1.aggregate since it could always reuse the "serde" from > stream.aggregateByKey, which is used to materialize the table1 object. > In order to get ride of it, implementation-wise we need to carry the serde > information along with the KTableImpl instance in order to re-use it in a > future operation that requires repartitioning. -- This message was sent by Atlassian JIRA (v6.3.4#6332)