Stream Processing
Stream processing continuously transforms data as records arrive. It lets you calculate, join, detect, or route information before waiting for a complete batch.
itData engineering and analytics | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Stream Processing
Stream processing is computation that keeps working while records keep arriving. A payment, click, device reading, or database change walks in, and the system has to do something useful before the queue of arrivals politely agrees to end. It will not agree. Batch processing waits for a finished pile of data; streaming makes progress through the pile while somebody is still adding to it.
The useful mental picture is a dataflow: sources provide records, operators change or combine them, and sinks put results somewhere useful. A filter can examine one record and move on. A running total or a join cannot. It needs state, meaning remembered information from earlier records. A key keeps the relevant records with the state that belongs to them, rather than letting every account's history become one large and argumentative heap.
Time is the part that looks innocent until it arrives late. Event time is when something happened. Processing time is when the system noticed. They are only the same in the unusually well-behaved universe where devices never disconnect and networks never delay anything. A window gives an endless stream a finite question, such as a total for one minute. A watermark estimates how far event time has moved, so the system can emit a result without waiting until the heat death of the universe. Late records can still appear, so the policy must say whether to drop, sideline, or correct them.
Failure also joins the meeting. A checkpoint saves operator state together with input positions. After a failure, the processor restores that point and replays what followed it. This is valuable, but it does not make an unrelated external API call happen exactly once. The delivery guarantee has a boundary. If the sink can see a repeated request, its effect needs to tolerate repetition or share the transaction boundary.
Read the Intro when the component flow and tradeoffs need a fuller explanation. Use Slides for the short map from records through recovery. Keep the Cheatsheet nearby when choosing a clock, a window, or a late-data policy. Then run the Practice Reference and Exercise: moving one event across a window boundary is a small experiment, but it makes the whole time model stop pretending to be decorative.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://nightlies.apache.org/flink/flink-docs-stable/docs/concepts/overview/
Supports
- Stateful and timely stream processing concepts
- Transformations, joins, aggregations, windows, and state in streaming APIs
- https://nightlies.apache.org/flink/flink-docs-stable/docs/concepts/stateful-stream-processing/
Supports
- Stateful operations and keyed state
- Checkpoints, input replay, recovery, and fault-tolerance boundaries
- https://nightlies.apache.org/flink/flink-docs-stable/docs/dev/datastream-v2/builtin-funcs/windows/
Supports
- Windows as finite buckets for infinite streams
- Tumbling, sliding, session, event-time, and processing-time windows
- https://beam.apache.org/documentation/programming-guide/
Supports
- Event time, watermarks, windowing, triggers, and late data
- https://kafka.apache.org/documentation/streams/
Supports
- Kafka Streams as a stream-processing library and its official documentation path
- https://github.com/manuzhang/awesome-streaming
Supports
- Curated discovery of Apache Flink, Apache Beam, and Kafka Streams for ecosystem links
- https://beam.apache.org/documentation/runners/direct/
Supports
- Local Direct Runner execution for Apache Beam pipelines
- https://flink.apache.org/2014/08/26/apache-flink-0.6-available/
Supports
- Apache Flink 0.6 as the first Apache Incubator release under the Flink name
- https://news.apache.org/foundation/entry/the_apache_software_foundation_announces88
Supports
- Apache Flink 1.0 release and project history
- https://beam.apache.org/blog/first-release/
Supports
- Apache Beam 0.1.0 incubating release with Flink, Spark, and Dataflow runners
- https://beam.apache.org/blog/python-sdk/
Supports
- Apache Beam Python SDK release
- https://beam.apache.org/blog/beam-first-stable-release/
Supports
- Apache Beam 2.0.0 first stable release and API stability commitment
- https://flink.apache.org/news/2020/12/10/release-1.12.0.html
Supports
- Apache Flink 1.12 release and batch-streaming unification work
- https://flink.apache.org/news/2021/05/03/release-1.13.0.html
Supports
- Apache Flink 1.13 release and stream-processing features
- https://shopify.engineering/apache-beam-for-search-getting-started-by-hacking-time
Supports
- Production event-time timestamps, watermarks, and tolerated lateness in a Beam pipeline
- https://shopify.engineering/real-time-buyer-signal-data-pipeline-shopify-inbox
Supports
- Stateful Beam processing and handling out-of-order customer events
- https://shopify.engineering/leveraging-go-worker-pools
Supports
- Consumption lag and a five-minute event-processing service-level objective in production
- https://spark.apache.org/streaming/
Supports
- Apache Spark Structured Streaming product selection
- https://cloud.google.com/dataflow
Supports
- Google Cloud Dataflow product selection
- https://aws.amazon.com/managed-service-apache-flink/
Supports
- Amazon Managed Service for Apache Flink product selection
- https://www.confluent.io/product/flink/
Supports
- Confluent Cloud for Apache Flink product selection
- https://materialize.com/
Supports
- Materialize product selection
