bytewax/bytewax

Python Stream Processing

What it solves

Bytewax provides a way to build stateful stream processing pipelines in Python. It bridges the gap between the high-performance distributed processing capabilities of engines like Apache Flink or Spark and the accessibility of the Python ecosystem, allowing developers to use their favorite Python libraries for real-time data transformation and machine learning.

How it works

Bytewax uses a dataflow computational model where users define a graph of operators and connectors. Data flows from an Input (such as Kafka or S3), through Operators (stateless transformations like map and filter, or stateful ones like reduce and fold_window), and finally to an Output (databases or message queues). The underlying engine is built in Rust for performance and distribution, while the interface is Python-first.

Who it’s for

It is designed for developers and data engineers who need to process event-driven data in real-time, scale from local development to Kubernetes clusters, and integrate online machine learning workloads into their data pipelines.

Highlights

  • Python-First Interface: Uses standard Python libraries and tooling for pipeline definition.
  • Stateful Processing: Automatically maintains and recovers state, supporting event-time windowing and fault tolerance.
  • Distributed Scaling: Scales horizontally across multiple workers and nodes using waxctl for Kubernetes deployments.
  • Rich Connector Ecosystem: Built-in support for Kafka, filesystems, WebSockets, and S3.

Related

  • Project
  • Project
  • Project
  • Project