You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Matthias J. Sax (Jira)" <ji...@apache.org> on 2025/03/10 00:31:00 UTC
[jira] [Resolved] (KAFKA-7079) ValueTransformerWithKeySupplier is not mentioned in the documentation
[ https://issues.apache.org/jira/browse/KAFKA-7079?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matthias J. Sax resolved KAFKA-7079.
------------------------------------
Resolution: Won't Fix
> ValueTransformerWithKeySupplier is not mentioned in the documentation
> ---------------------------------------------------------------------
>
> Key: KAFKA-7079
> URL: https://issues.apache.org/jira/browse/KAFKA-7079
> Project: Kafka
> Issue Type: Bug
> Components: streams
> Affects Versions: 1.1.0
> Environment: Fedora 27
> Reporter: Hashan Gayasri Udugahapattuwa
> Priority: Major
>
> ValueTransformer#transform does not pass the key
> KStream#transformValues(ValueTransformerWithKeySupplier ..... method is not documented. It might lead to people to use workarounds or fall back to using Transformer. This is very likely if the user is using a wrapper API (i.e: for Scala) as the user would be checking the documentation more than the available API functions in code.
>
>
>
>
> ----
> *Original issue (as it might be useful as a business requirement)*
> ValueTransformers' transform method doesn't pass the key to user-code. Reporting this as a bug since it currently requires workarounds.
> Context:
> I'm currently in the process of converting two stateful "*aggregate*" DSL operations to the Processor API since the state of those operations are relatively large and takes 99% + of CPU time (when profiled) for serializing and deserializing them via Kryo.
> Since DSL aggregations use state stores of [Bytes, Array[Byte]]] even when using the in-memory state store, it seems like the only way to reduce the serialization/deserialization overhead is to convert heavy aggregates to *transform*s.
> In my case, *ValueTransformer* seems to be the option. However, since ValueTransformers' _transform_ method only exposes the _value_, I'd either have to pre-process and add the key to the value or use *Transformer* instead (which is not my intent).
>
> As internal _*InternalValueTransformerWithKey*_ already has the readOnlyKey, it seems like a good idea to pass the key to the transform method as well, esp since in a stateful transformation, generally the state store has to be queried by the key.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)