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

Elias Levy commented on FLINK-4050:
-----------------------------------

I can get around it, it's just not very pretty code.

A no-op KeyedSerializationSchema / SerializationSchema would work.  Not sure if 
that would mean changing the return type of serializeValue / serializeKey to 
Object, adding a new field to the interface to point out it is a no-op, or 
allowing the passing in of a null for the serialization schema parameter to 
FlinkKafkaProducer.

That said, there would still be a need to add a new method to the interface to 
separate serialization from key extraction, which right now 
KeyedSerializationSchema.serializeKey is expected to do.  Although, doing so 
would be backwards compatible.

> FlinkKafkaProducer API Refactor
> -------------------------------
>
>                 Key: FLINK-4050
>                 URL: https://issues.apache.org/jira/browse/FLINK-4050
>             Project: Flink
>          Issue Type: Improvement
>          Components: Kafka Connector
>    Affects Versions: 1.0.3
>            Reporter: Elias Levy
>
> The FlinkKafkaProducer API seems more difficult to use than it should be.  
> The API requires you pass it a SerializationSchema or a 
> KeyedSerializationSchema, but the Kafka producer already has a serialization 
> API.  Requiring a serializer in the Flink API precludes the use of the Kafka 
> serializers.  For instance, they preclude the use of the Confluent 
> KafkaAvroSerializer class that makes use of the Confluent Schema Registry.  
> Ideally, the serializer would be optional, so as to allow the Kafka producer 
> serializers to handle the task.
> In addition, the KeyedSerializationSchema conflates message key extraction 
> with key serialization.  If the serializer were optional, to allow the Kafka 
> producer serializers to take over, you'd still need to extract a key from the 
> message.
> And given that the key may not be part of the message you want to write to 
> Kafka, an upstream step may have to package the key with the message to make 
> both available to the sink, for instance in a tuple. That means you also need 
> to define a method to extract the message to write to Kafka from the element 
> passed into the sink by Flink.  
> In summary, there should be separation of extraction of the key and message 
> from the element passed into the sink from serialization, and the 
> serialization step should be optional.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to