A programming language for data stream processing.

$ cargo install aqua --git https://github.com/aqua-language/aqua
Text copied to clipboard!
 1  # Calculate the total quantity and average EUR price of items every
 2  # six hours for orders that have been shipped in the last day.
 3  
 4  struct Item(id:u64, priceUsd:f64, quantity:u64);
 5  struct Order(id:u64, items:Vec[Item], status:String, ts:Time);
 6  
 7  from o:Order in source(kafka("localhost:9092/orders"), json(), _.ts)
 8  where o.status == "shipped"
 9  from i:Item in o.items
10  group itemId = i.id
11    over sliding(size=1d, slide=6h)
12    compute avgPriceUsd = avg of i.priceUsd,
13            totalQuantity = sum of i.quantity
14  select itemId, avgPriceEur = avgPriceUsd * 0.85, totalQuantity
15  into sink(kafka("localhost:9092/items"), csv()).run(flink());

Get Started ⇩

Overview

Aqua is a high-level programming language for processing data streams. It is designed to be simple, expressive, efficient and safe. Aqua compiles to dataflow systems such as Apache Flink (Java), and a custom native runtime (Rust).

Features (Planned)

Installation

$ cargo install aqua --git https://github.com/aqua-language/aqua

Usage

$ aqua
>> print("Hello world!");
Hello world!

More