A runtime for writing streaming applications with the Rust programming language.
Arcon is in development and should be considered experimental until further notice.
Arcon currently requires Rust nightly (See current toolchain here).
More detailed information about Arcon can be found here
See the roadmap here
- 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
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.
arcon_allocator
: Custom allocator.arcon_build
: Protobuf builderarcon_macros
: Arcon derive macros.arcon_shell
: Explore a live Arcon applicationarcon_state
: State management features.arcon_tests
: Integration testsarcon_tui
: Text-based dashboard.
This project is licensed under the AGPL-3.0 license.
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.