Serdes et sérialisation des données dans Kafka Streams
Découvrez comment Kafka Streams utilise les Serdes pour sérialiser et désérialiser les clés et les valeurs, et comment configurer les Serdes par défaut et par opération.
Serdes et sérialisation des données dans Kafka Streams est une leçon Apache Kafka & Stream Processing Fundamentals gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Apache Kafka & Stream Processing Fundamentals, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Apache Kafka & Stream Processing Fundamentals comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
What Is a Serde?
A Serde is a combined Serializer and Deserializer. Kafka Streams uses it to convert between your Java objects and the bytes stored in Kafka.
Every key and value flowing through a topology needs a Serde.
Why Streams Needs Serdes Everywhere
Unlike a plain consumer, Kafka Streams writes intermediate results back to Kafka (for repartitioning and state).
So it must know how to serialize data not just on input/output, but at every shuffle and store — hence Serdes appear throughout the API.
Built-in Serdes
The Serdes factory class provides ready-made Serdes for common types.
Serde<String> stringSerde = Serdes.String();
Serde<Long> longSerde = Serdes.Long();
Serde<byte[]> bytesSerde = Serdes.ByteArray();Default Serdes
You can set default key and value Serdes in the Streams config so you don't repeat them everywhere.
Properties props = new Properties();
props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,
Serdes.String().getClass());
props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG,
Serdes.String().getClass());Overriding Per Operation
When a specific stream uses a different type, override the default with Consumed, Produced, or Materialized.
KStream<String, Long> counts = builder.stream(
"counts-topic",
Consumed.with(Serdes.String(), Serdes.Long()));Custom JSON Serde
For domain objects, a common choice is a JSON Serde that maps a class to and from JSON bytes.
// Conceptual JSON value Serde for an Order POJO
Serde<Order> orderSerde = new JsonSerde<>(Order.class);
KStream<String, Order> orders = builder.stream(
"orders",
Consumed.with(Serdes.String(), orderSerde));Avro & Schema Registry Serdes
For schema-governed data, use the Confluent SpecificAvroSerde or GenericAvroSerde.
- They register and look up schemas in Schema Registry.
- They enforce compatibility as your data evolves.
Serdes and Repartitioning
Operations like selectKey or groupBy trigger a repartition through an internal topic.
Kafka Streams needs valid key/value Serdes at that point — a missing or wrong Serde here is a frequent source of runtime errors.
Serdes for State Stores
Stateful operations materialize results into a store backed by a changelog topic.
KTable<String, Long> totals = orders
.groupByKey()
.count(Materialized.with(Serdes.String(), Serdes.Long()));Common Serde Errors
Watch for these pitfalls:
ClassCastException— the default Serde doesn't match the actual type.SerializationException— bytes don't match the deserializer (wrong topic data).- Forgetting to override the Serde after changing the value type.
Best Practices
Keep serialization sane:
- Set sensible defaults, override only when types change.
- Use Schema Registry Serdes for evolving data contracts.
- Make custom Serdes null-safe.
- Match Serde types exactly at repartition and store boundaries.
Quick Check
Test your understanding of Serdes.
Recap
You learned how Serdes drive serialization in Kafka Streams.
- A Serde bundles a serializer and deserializer.
- Set defaults in config; override with Consumed/Produced/Materialized.
- Use JSON or Avro/Schema Registry Serdes for domain objects.
- Mismatched Serdes are a top cause of runtime errors.
Questions Fréquemment Posées
La leçon « Serdes et sérialisation des données dans Kafka Streams » est-elle gratuite ?
Oui — le texte complet de « Serdes et sérialisation des données dans Kafka Streams » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Apache Kafka & Stream Processing Fundamentals, passe à CoddyKit PRO. Le cours Apache Kafka & Stream Processing Fundamentals comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Serdes et sérialisation des données dans Kafka Streams » ?
Découvrez comment Kafka Streams utilise les Serdes pour sérialiser et désérialiser les clés et les valeurs, et comment configurer les Serdes par défaut et par opération. Tu pratiques Apache Kafka & Stream Processing Fundamentals avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Apache Kafka & Stream Processing Fundamentals ?
Aucune expérience préalable n'est requise. Apache Kafka & Stream Processing Fundamentals sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Serdes et sérialisation des données dans Kafka Streams » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Apache Kafka & Stream Processing Fundamentals ?
Oui. Chaque leçon Apache Kafka & Stream Processing Fundamentals inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Créer une application Kafka Streams simple
- Concepts de KStream et KTable
- Opérations sans état ou avec état
- Serdes et sérialisation des données dans Kafka Streams