Table of contents : Stream Processing: Hands\hyp{}on with Apache Flink Stream Processing: Hands\hyp{}on with Apache Flink Introduction In the land of streams The Streaming Layer: Redpanda Flink’s Runtime Summary Streams and Tables Streaming SQL Semantics Flink SQL Logical Components Running SQL Queries Operators The TableEnvironment Summary Watermarks & Windows The Notion of Time Time Windows What is a Watermark? How do watermarks work? Watermark Generation Watermark Propagation Idle Sources Summary Streaming Joins Introduction Regular Joins Interval Joins Temporal Joins Lookup Joins Summary User Defined Functions Scalar Functions Table Functions Aggregate & Table Aggregate Functions External Service Lookup UDF Summary The Datastream API Sources Datastream Operators Merging Multiple Streams Event Buffering & Enrichment Handling Late Arriving Data Summary Fault Tolerance Why the need for checkpoints? Failure in Practise Flink’s Checkpointing Algorithm Aligned and Unaligned Checkpoints Checkpoints vs. Savepoints Summary State Backends State Backends Using RocksDB Inspecting RocksDB Tuning and Troubleshooting Summary Monitoring and Troubleshooting Metrics System Prometheus and Grafana Setup Setting up Flink Dashboards Troubleshooting tips Summary