Согласно потоковой документации Flink:
Функция окна может быть одной из: ReduceFunction, FoldFunction или
WindowFunction. Первые два могут быть выполнены более эффективно (см.
Раздел Размер), потому что Flink может постепенно агрегировать
элементы для каждого окна по мере их поступления.
Применяется ли то же самое в пакетном режиме? В приведенном ниже примере я читаю ~ 36go данных из Кассандры, но я ожидаю, что уменьшенный выходной сигнал будет намного меньше (~ 0.5go). Для выполнения этого задания потребуется flink для сохранения всего ввода в памяти или он достаточно умен, чтобы просто перебирать его
DataSet<MyRecord> input = ...;
DataSet<MyRecord> sampled = input
.groupBy(MyRecord::getSampleKey)
.reduce(MyRecord::keepLast);