Разница между max и maxBy заключается в том, что max возвращает максимальное значение, тогда как maxBy возвращает элемент, имеющий максимальное значение в этом поле.
keyedStream.max(0);
keyedStream.max("key");
keyedStream.maxBy(0);
keyedStream.maxBy("key");
В следующих примерах мы также можем увидеть разницу:
Использование max
:
// Create a Tumbling Window with the values of 1 day:
.timeWindow(Time.of(1, TimeUnit.DAYS))
// Use the max Temperature of the day:
.max("temperature")
// And perform an Identity map, because we want to write all values of this day to the Database:
.map(new MapFunction<elastic.model.LocalWeatherData, elastic.model.LocalWeatherData>() {
@Override
public elastic.model.LocalWeatherData map(elastic.model.LocalWeatherData localWeatherData) throws Exception {
return localWeatherData;
}
});
Использование maxBy
:
// Now take the Maximum Temperature per day from the KeyedStream:
DataStream<LocalWeatherData> maxTemperaturePerDay =
localWeatherDataByStation
// Use non-overlapping tumbling window with 1 day length:
.timeWindow(Time.days(1))
// And use the maximum temperature:
.maxBy("temperature");