[ https://issues.apache.org/jira/browse/KAFKA-3543?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15236121#comment-15236121 ]
Greg Fodor edited comment on KAFKA-3543 at 4/11/16 10:40 PM: ------------------------------------------------------------- Also note that in my case flatMap() is not sufficient for my needs, since I need to able to use state stores. was (Author: gfodor): Also note that in my case the iflatMap() is not sufficient for my needs, since I need to able to use state stores. > Allow a variant of transform() which can emit multiple values > ------------------------------------------------------------- > > Key: KAFKA-3543 > URL: https://issues.apache.org/jira/browse/KAFKA-3543 > Project: Kafka > Issue Type: Improvement > Components: streams > Affects Versions: 0.10.0.0 > Reporter: Greg Fodor > Assignee: Guozhang Wang > > Right now it seems that if you want to apply an arbitrary transformation to a > stream, you either have to use a TransformerSupplier or ProcessorSupplier > sent to transform() or process(). The custom processor will allow you to emit > multiple new values, but the process() method currently terminates that > branch of the topology so you can't apply additional data flow. transform() > lets you continue the data flow, but forces you to emit a single value for > every input value. > (It actually doesn't quite force you to do this, since you can hold onto the > ProcessorContext and emit multiple, but that's probably not the ideal way to > do it :)) > It seems desirable to somehow allow a transformation that emits multiple > values per input value. I'm not sure of the best way to factor this inside of > the current TransformerSupplier/Transformer architecture in a way that is > clean and efficient -- currently I'm doing the workaround above of just > calling forward() myself on the context and actually emitting dummy values > which are filtered out downstream. -- This message was sent by Atlassian JIRA (v6.3.4#6332)