В рамках нашего проекта мы осуществили интеграцию инструментов для потоковой обработки данных Siddhi и Apache Flink. Наше решение позволяет использовать возможности Apache Flink с наименьшим количеством правок в коде для Siddhi.
- JOIN
- GROUP BY
// Инициализация DataStream<Row> на которых будет выполняться запрос
DataStream<Row> sourceStream = env.fromElements(new Object[]{"Vasya", 5f, 50L}, new Object[]{"Lena", 5f, 30L}).map(Row::of);
// Определяем Siddhi query, который необходимо запустить
String querySelect = "" +
"define stream StockStream (name string, department float, salary long); " +
"" +
"@info(name = 'query1') " +
"from StockStream " +
"select department, name, salary " +
"insert into OutputStream;";
// Инициализируем среду выполнения нашей библиотечки
FliddhiExecutionEnvironment fEnv = FliddhiExecutionEnvironment.getExecutionEnvironment(env);
// Регистрируем в нашей среде выполнения потоки (их может быть больше одного) как (Название, сам поток)
fEnv.registerInputStream("StockStream", sourceStream);
// Выполняем запрос на зарегистрированных потоках, получаем пару key-value, где key -- название выходного потока, dataStream<row> -- сам поток
Map<String, DataStream<Row>> outputStream = fEnv.siddhiQL(querySelect);
Проект создан в рамках Зимней Школы CompTech 2021 по заказу от компании Huawei. Более подробно с техническим заданием можно ознакомиться здесь:
https://docs.google.com/document/d/1JTnql3-7uOlBwvzu6ZkPxqVtpWKOAwVTsAv0NfaAbcs/
Наша команда:
- Безверхова Ольга (Technical Writer) @brookoli
- Губаренко Антонина (Tester) @a-gubarenko
- Зозуля Артём (Developer) @Br0adSky
- Обухова Алиса (Teamleader, Developer) @lbdlbdlbdl
- Попов Дмитрий (Developer) @Popov-Dmitry
- Трушев Александр (Supervisor) @trushev