Skip to content

cda-group/arcon

Repository files navigation

Arcon

A runtime for writing streaming applications with the Rust programming language.

ci Cargo License

Project Status

Arcon is in development and should be considered experimental until further notice.

Rust Version

Arcon currently requires Rust nightly (See current toolchain here).

User Guide

More detailed information about Arcon can be found here

Roadmap

See the roadmap here

Highlights

  • Arrow-native
  • Hybrid Row(Protobuf) / Columnar (Arrow) System
  • Dynamic & Scalable Middleware
  • Flexible State Management
    • Backend per Operator (e.g., RocksDB, Sled)
    • Eager and Lazy state indexes

Vision

Example

use arcon::prelude::*;

fn main() {
    let mut pipeline = Pipeline::default()
        .collection((0..100).collect::<Vec<u64>>(), |conf| {
            conf.set_arcon_time(ArconTime::Event);
            conf.set_timestamp_extractor(|x: &u64| *x);
        })
        .operator(OperatorBuilder {
            constructor: Arc::new(|_| Filter::new(|x| *x > 50)),
            conf: Default::default(),
        })
        .to_console()
        .build();

    pipeline.start();
    pipeline.await_termination();
}

More advanced examples can be found here.

Project Layout

License

This project is licensed under the AGPL-3.0 license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Arcon by you shall be licensed as AGPL-3.0, without any additional terms or conditions.