Мне интересно, можно ли каскадировать раздвижные окна друг к другу с помощью Sparks Streaming.Можете ли вы каскадировать раздвижные окна в искровом потоке
Так, например, у меня есть счет, поступающий через каждые 1 секунду. Я хочу суммировать их для окон от 5,15 до 30 секунд. Мне интересно, можно ли повторно использовать 5-секундные оконные результаты за 15 секунд, а 15 секунд - за 30 секунд.
Цель состоит в том, чтобы избежать сохранения 1-го обновления для всех входов, для длины самого длинного окна (поскольку зернистость здесь не имеет значения). Вместо этого мы повторно используем Dstream с частотой, которая соответствует той, которая нам нужна.
Вот и пример:
JavaPairDStream< String, Double > test = input;
JavaPairDStream< String, Double > test1 = input;
// 5s:
test = test.reduceByKeyAndWindow(new SumReducer(), new Duration(5000), new Duration(1000));
test1 = test1.reduceByKeyAndWindow(new SumReducer(), new Duration(5000), new Duration(5000));
// 15s
test = test1.reduceByKeyAndWindow(new SumReducer(), new Duration(15000), new Duration(5000));
test1 = test1.reduceByKeyAndWindow(new SumReducer(), new Duration(15000), new Duration(15000));
// 30s
test = test1.reduceByKeyAndWindow(new SumReducer(), new Duration(30000), new Duration(15000));
test.print();
Я попытался это, но ничего не получить печатные.
Основываясь на указанном вами ограничении, я не понимаю, почему не было бы возможности исчислять 15 секунд каждые 5 секунд (и 30 секунд каждые 15 секунд). Не могли бы вы объяснить это? – Arthur
@jules: В вашем вопросе не было ясно, как часто вы хотите испускать. Я буду обновлять свой ответ после работы. –
@jules: Я обновил свой ответ, надеюсь, это поможет. –