You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Mark Tranter (JIRA)" <ji...@apache.org> on 2018/11/21 23:44:00 UTC

[jira] [Comment Edited] (KAFKA-7653) Streams-Scala: Add type level differentiation for Key and Value serdes.

    [ https://issues.apache.org/jira/browse/KAFKA-7653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16695312#comment-16695312 ] 

Mark Tranter edited comment on KAFKA-7653 at 11/21/18 11:43 PM:
----------------------------------------------------------------

Thats great guys thanks.

I'll submit a WIP PR shortly to give us something to talk about. I agree with [~vvcephei] that it will be hard to achieve full backwards compatibility but lets see what we can do!

 

EDIT: 
PR: [https://github.com/apache/kafka/pull/5938]

 

 


was (Author: mark.tranter):
Thats great guys thanks.


I'll submit a WIP PR shortly to give us something to talk about. I agree with [~vvcephei] that it will be hard to achieve full backwards compatibility but lets see what we can do!

 

 

> Streams-Scala: Add type level differentiation for Key and Value serdes.
> -----------------------------------------------------------------------
>
>                 Key: KAFKA-7653
>                 URL: https://issues.apache.org/jira/browse/KAFKA-7653
>             Project: Kafka
>          Issue Type: Improvement
>          Components: streams
>            Reporter: Mark Tranter
>            Assignee: Mark Tranter
>            Priority: Minor
>              Labels: scala
>
> Implicit resolution/conversion of Serdes/Consumed etc is a big improvement for the Scala Streams API. However in cases where a user needs to differentiate between Key and Value serializer functionality (i.e. using the Schema Registry), implicit resolution doesn't help and could cause issues. 
> e.g.
> {code:java}
> case class MouseClickEvent(pageId: Long, userId: String)
> builder
>   // Long serde taken from implicit scope configured with
>   // `isKey` = true
>   .stream[Long, MouseClickEvent]("mouse-clicks")
>   .selectKey((_,v) => v.userId)
>   .groupByKey
>   .aggregate(() => 0L, (_: String, mce: MouseClickEvent, count: Long) => count + 1)
>   .toStream
>   // Same Long serde taken from implicit scope configured with
>   // `isKey` = true, even thought the `Long` value in this case
>   // will be the Value
>   .to("mouse-clicks-by-user")
> {code}
> It would be ideal if Key and Value Serde/SerdeWrapper types/type classes could be introduced to overcome this limitation.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)