# A Deep Dive Into Ingesting Debezium Events From Kafka With Flink SQL

DevFeed: [A Deep Dive Into Ingesting Debezium Events From Kafka With Flink SQL](<https://devfeed.tech/articles/a-deep-dive-into-ingesting-debezium-events-from-kafka-with-flink-sql-18833.md>)

Original publisher: [Read original article](<https://www.morling.dev/blog/ingesting-debezium-events-from-kafka-with-flink-sql/>)

Published: 2025-04-16T09:25:00Z

Content type: tutorial

Language: en

Sources: [Gunnar Morling](<https://devfeed.tech/sources/gunnar-morling.md>)

Topics: [apache-flink](<https://devfeed.tech/topics/apache-flink.md>), [Kafka](<https://devfeed.tech/topics/kafka.md>), [Apache-Kafka](<https://devfeed.tech/topics/apache-kafka.md>)

Tags: [changelog](<https://devfeed.tech/tags/changelog.md>), [connectors](<https://devfeed.tech/tags/connectors.md>), [data](<https://devfeed.tech/tags/data.md>), [debezium](<https://devfeed.tech/tags/debezium.md>), [flink](<https://devfeed.tech/tags/flink.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [schema](<https://devfeed.tech/tags/schema.md>), [streams](<https://devfeed.tech/tags/streams.md>)

## AI overview

This tutorial explains how to ingest Debezium change events from Kafka into Apache Flink using Flink SQL. It compares the Apache Kafka SQL Connector and Upsert Kafka SQL Connector, discusses JSON and Avro formats, and explains how connector and format choices determine append-only or changelog semantics.

## Source excerpt

Table of Contents Flink SQL Connectors for Apache Kafka The Apache Kafka SQL Connector in Append-Only Mode The Apache Kafka SQL Connector As a Changelog Source The Upsert Kafka SQL Connector Summary Over the years, I've spoken quite a bit about the use cases for processing Debezium data change events with Apache Flink, such as metadata enrichment, building denormalized data views, and creating data contracts for your CDC streams. One detail I haven't covered in depth so far is how to actually ingest Debezium change events from a Kafka topic into Flink, in particular via Flink SQL. Several connectors and data formats exist for this, which can make things somewhat confusing at first. So let's dive into the different options and the considerations around them!