Hydroflow+ layers a high-level Rust API over the Hydroflow IR, making it possible to write dataflow programs that span multiple processes with straightline, functional Rust code. Hydroflow+ is built on top of Stageleft, which allows Hydroflow+ to emit regular Hydroflow programs that are compiled into efficient Rust binaries. It also integrates with Hydro Deploy to make it easy to deploy and run Hydroflow+ programs on a cluster.
The main logic of Hydroflow+ programs manipulates streams, which capture infinite ordered sequences of elements. Streams are transformed using classic functional operators such as
fold, as well as relational operators such as
join. To build distributed dataflow programs, Hydroflow+ also introduces the concept of processes, which capture where a stream is being processed.
Hydroflow+ requires a particular workspace setup, as any crate that uses Hydroflow+ must have an supporting macro crate to drive the code generation. To get started, we recommend using the Hydroflow+ template.
cargo install cargo-generate
cargo generate hydro-project/hydroflow-plus-template
Then, you can test the example dataflow: