| <!DOCTYPE html>
|
| <html lang="en"><head> |
| <meta charset="utf-8"> |
| <title>Understanding stream table duality using Kafka, Flink SQL and Debezium format | Community Over Code Europe</title> |
| |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <meta name="description" |
| content="Community Over Code Europe is the annual gathering in Europe of the Apache Software Foundation community."> |
| |
| |
| <meta name="generator" content="Hugo 0.119.0"><meta property="og:title" content="Understanding stream table duality using Kafka, Flink SQL and Debezium format" /> |
| <meta property="og:description" content="Kafka Streams, ksqlDB or Flink SQL are popular processing engines that enable us to run SQL queries on top of streaming data. Isn’t it fascinating that we can run SQL queries on top of streaming data as if they were relational tables, or convert a table into a stream of changelog events? This is known as the stream-table duality. |
| In this talk we will try to understand how it works under the hood using Flink SQL, Kafka connector with Debezium JSON/Avro format." /> |
| <meta property="og:type" content="article" /> |
| <meta property="og:url" content="https://eu.communityovercode.org/sessions/2024/understanding-stream-table-duality-using-kafka-flink-sql-and-debezium-format/" /><meta property="og:image" content="https://eu.communityovercode.org/images/card.jpg"/><meta property="article:section" content="sessions" /> |
| |
| |
| <meta name="twitter:card" content="summary_large_image"/> |
| <meta name="twitter:image" content="https://eu.communityovercode.org/images/card.jpg"/> |
| |
| <meta name="twitter:title" content="Understanding stream table duality using Kafka, Flink SQL and Debezium format"/> |
| <meta name="twitter:description" content="Kafka Streams, ksqlDB or Flink SQL are popular processing engines that enable us to run SQL queries on top of streaming data. Isn’t it fascinating that we can run SQL queries on top of streaming data as if they were relational tables, or convert a table into a stream of changelog events? This is known as the stream-table duality. |
| In this talk we will try to understand how it works under the hood using Flink SQL, Kafka connector with Debezium JSON/Avro format."/> |
| <!-- plugins --> |
| |
| <link rel="stylesheet" href="/plugins/bootstrap.min.css"> |
| |
| <link rel="stylesheet" href="/plugins/bootstrap-table.min.css"> |
| |
| <link rel="stylesheet" href="/plugins/fontawesome.css"> |
| |
| |
| <!-- Main Stylesheet --> |
| |
| <link rel="stylesheet" href='/scss/style.min.css?v=202406201555' media="screen"> |
| |
| <!--Favicon--> |
| <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> |
| <link rel="icon" href="/favicon.ico" type="image/x-icon"> |
| |
| |
| </head><body class="interior">
|
| <header class="header-bar">
|
| <nav class="navbar navbar-expand-lg main-nav navbar-light fixed-top">
|
|
|
| <a class="navbar-brand ml-4 pb-2" href='/'>
|
| <img src="/images/coc-logo-color.svg" alt="Community Over Code Europe" class="img-fluid logo-b">
|
| </a>
|
| <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navigation"
|
| aria-controls="navigation" aria-expanded="false" aria-label="Toggle navigation">
|
| <span class="navbar-toggler-icon"></span>
|
| </button>
|
|
|
|
|
| <div class="collapse navbar-collapse text-center my-auto" id="navigation">
|
| <ul class="navbar-nav me-auto align-items-center">
|
|
|
|
|
| <li class="nav-item dropdown">
|
| <a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true"
|
| aria-expanded="false">
|
| About
|
| </a>
|
| <div class="dropdown-menu">
|
|
|
| <a class="dropdown-item" href="/about">Community Over Code</a>
|
|
|
| <a class="dropdown-item" href="/about-the-asf">About the ASF</a>
|
|
|
| <a class="dropdown-item" href="/diversity-and-inclusion">Diversity & Inclusion</a>
|
|
|
| </div>
|
| </li>
|
|
|
|
|
|
|
| <li class="nav-item">
|
| <a class="nav-link" href="/program">Program</a>
|
| </li>
|
|
|
|
|
|
|
| <li class="nav-item">
|
| <a class="nav-link" href="/speakers">Speakers</a>
|
| </li>
|
|
|
|
|
|
|
| <li class="nav-item dropdown">
|
| <a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true"
|
| aria-expanded="false">
|
| Venue
|
| </a>
|
| <div class="dropdown-menu">
|
|
|
| <a class="dropdown-item" href="/venue">About the venue</a>
|
|
|
| <a class="dropdown-item" href="/how-to-get-there">How to get there</a>
|
|
|
| </div>
|
| </li>
|
|
|
|
|
|
|
| <li class="nav-item">
|
| <a class="nav-link" href="/#latest-news">News</a>
|
| </li>
|
|
|
|
|
|
|
| <li class="nav-item">
|
| <a class="nav-link" href="/faq">FAQ</a>
|
| </li>
|
|
|
|
|
|
|
|
|
| <li class="nav-item">
|
| <a id="nav-button" href="/tickets" class="btn btn-orange text-white btn-rounded">Tickets</a>
|
| </li>
|
|
|
| </ul>
|
| </div>
|
| </nav>
|
| </header>
|
|
|
|
|
| <section class="page-header">
|
| <div class="container">
|
| <div class="row justify-content-center">
|
| <div class="col-lg-8">
|
| <div class="content text-center">
|
| <h1 class="mb-3">Understanding stream table duality using Kafka, Flink SQL and Debezium format</h1>
|
| <div class="divider mx-auto mb-4 bg-secondary"></div>
|
| </div>
|
| </div>
|
| </div>
|
| </div>
|
| </section>
|
| |
| |
| |
| <section class="speaker-detail"> |
| <div class="container"> |
| <div class="row mt-4"> |
| <div class="image-column col-lg-3 d-none d-lg-block"> |
| <div class="schedule-block col-lg-10 col-md-12 col-sm-12"> |
| <div class="sec-title text-center"> |
| <span class="title">Speaker(s):</span> |
| <div class="speaker-info" style="margin-bottom: 20px;"> |
| |
| <figure class="thumb my-3"> |
| <a href="/speakers/muhammet-orazov/"> |
| <div class="img-container"> |
| |
| |
| |
| <img src="/images/speakers/muhammet-orazov_hu97e88dfdaae4b6e7cf533a08ce4cead5_128799_400x0_resize_q75_h2_box.webp" alt="Photo of images/speakers/muhammet-orazov.jpg" class="img-fluid rounded-circle"> |
| |
| </div> |
| <h5 class="name">Muhammet Orazov</h5> |
| </a> |
| </figure> |
| |
| </div> |
| |
| </div> |
| </div> |
| </div> |
| <div class="info-column col-lg-9 col-md-12 col-sm-12"> |
| <div class="inner-column"> |
| <div class="text-box"> |
| <div class="session-meta" id="date"> |
| |
| <div> |
| <em>Jun-05 16:00-16:30 in Rhapsody</em> |
| </div> |
| |
| <div class="d-lg-none d-xl-none"> |
| By |
| |
| <a class="speaker-inline-item" href="https://eu.communityovercode.org/speakers/muhammet-orazov/">Muhammet Orazov</a> |
| |
| </div> |
| |
| |
| |
| <div class="content mt-4"><p>Kafka Streams, ksqlDB or Flink SQL are popular processing engines that enable us to run SQL queries on top of streaming data. Isn’t it fascinating that we can run SQL queries on top of streaming data as if they were relational tables, or convert a table into a stream of changelog events? This is known as the stream-table duality.</p> |
| <p>In this talk we will try to understand how it works under the hood using Flink SQL, Kafka connector with Debezium JSON/Avro format.</p> |
| <p>The following points will be presented and discussed:</p> |
| <ul> |
| <li> |
| <p>What is stream-table duality?</p> |
| </li> |
| <li> |
| <p>Change data capture (CDC) event descriptions</p> |
| </li> |
| <li> |
| <p>SQL queries on top of changelog data</p> |
| </li> |
| <li> |
| <p>Short Demo</p> |
| </li> |
| <li> |
| <p>Conclusion and Q&A</p> |
| </li> |
| </ul> |
| <p>At the conclusion of the presentation, the attendees will possess a more comprehensive understanding of stream-table duality, how it works in practice, and how to apply it into their own systems.</p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| </div> |
| </div> |
| </section> |
| |
| |
| |
|
|
|
|
| <footer>
|
| <div class="container-fluid">
|
| <div class="container py-5">
|
| <div class="d-flex justify-content-between">
|
| <div class="col-6 col-md-4 col-lg-3">
|
| <div class="mb-3"> <img src="/images/logo-h.svg" class="img-fluid" alt="Community Over Code Europe"></div>
|
|
|
|
|
| <ul class="list-inline mb-0">
|
|
|
| <li class="list-inline-item mx-2 h3" data-toggle="tooltip" data-placement="top" title aria-label="Email us" data-original-title="Email us">
|
| <a title="Email us" target="_blank" href="mailto:coceu@sg.com.mx?subject=[EU]">
|
| <i class="fa fa-envelope" aria-hidden="true"></i>
|
| </a>
|
| </li>
|
|
|
| <li class="list-inline-item mx-2 h3" data-toggle="tooltip" data-placement="top" title aria-label="Slack" data-original-title="Slack">
|
| <a title="Slack" target="_blank" href="https://s.apache.org/apachecon-slack">
|
| <i class="fab fa-slack" aria-hidden="true"></i>
|
| </a>
|
| </li>
|
|
|
| <li class="list-inline-item mx-2 h3" data-toggle="tooltip" data-placement="top" title aria-label="Watch us on YouTube" data-original-title="Watch us on YouTube">
|
| <a title="Watch us on YouTube" target="_blank" href="https://www.youtube.com/@communityovercode">
|
| <i class="fab fa-youtube" aria-hidden="true"></i>
|
| </a>
|
| </li>
|
|
|
| </ul>
|
|
|
|
|
| </div>
|
| <div class="col-md-6 text-right">
|
| <div class="footer-links">
|
|
|
|
|
| <ul>
|
|
|
| <li><a href="/coc" >
|
| Code of Conduct
|
| </a></li>
|
|
|
| <li><a href="/accessibility" >
|
| Accessibility
|
| </a></li>
|
|
|
| <li><a href="/privacy" >
|
| Privacy Policy
|
| </a></li>
|
|
|
| <li><a href="/team" >
|
| Organizers
|
| </a></li>
|
|
|
| <li><a href="https://communityovercode.org/wp-content/uploads/2023/12/community-over-code-prospectus-2024.pdf" >
|
| Prospectus
|
| </a></li>
|
|
|
| </ul>
|
|
|
|
|
| </div>
|
| </div>
|
| </div>
|
| </div>
|
| </div>
|
| <div class="footer-section footer-section__policies-section bg-dark">
|
| <div class="container my-0 footer-section__policies-section--disclaimer">
|
| Community Over Code operates under the terms of <a href="https://apache.org/foundation/policies/conduct">The ASF Code of Conduct</a>.
|
|
|
| </div>
|
| </div>
|
| </footer>
|
|
|
|
|
| <!-- JS Plugins -->
|
|
|
| <script src="/plugins/jquery.min.js"></script>
|
|
|
| <script src="/plugins/bootstrap.bundle.min.js"></script>
|
|
|
| <script src="/plugins/bootstrap-table.min.js"></script>
|
|
|
| <script src="/plugins/bootstrap-table.min.js"></script>
|
|
|
| <script src="https://js.tito.io/v2"></script>
|
|
|
|
|
| <script>
|
| var _paq = window._paq = window._paq || [];
|
|
|
| _paq.push(["disableCookies"]);
|
| _paq.push(['trackPageView']);
|
| _paq.push(['enableLinkTracking']);
|
| (function() {
|
| var u="https://analytics.apache.org/";
|
| _paq.push(['setTrackerUrl', u+'matomo.php']);
|
| _paq.push(['setSiteId', '39']);
|
| var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
| g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
|
| })();
|
| </script>
|
|
|
| </body>
|
|
|
| </html> |