我是Flink的新手,我想知道如果有多个记录具有最小值,minBy的行为是什么(对maxBy的猜测是一样的(。我注意到Flink在这种情况下只输出一条记录,但是哪一条?第一个,最后一个还是随机的?
谢谢你的帮助。
请注意,从FLIP-134开始,数据流上的所有这些关系方法,即Windowed/KeyedStream#sum,min,max,minBy,maxBy
,都计划弃用。整个数据集API也计划最终被弃用。
对此类关系方法的唯一长期支持是由Table和SQLAPI提供的。
但为了回答你的问题,minBy和maxBy的工作方式是一样的。
DataSet#maxBy
的javadoc表示
如果在指定字段中存在多个具有最大值的值,则将选择。
而AllWindowedStream#maxBy(int positionToMaxBy)
和KeyedStream#maxBy(int positionToMaxBy)
的javadocs说
如果更多元素具有相同的最大值,则运算符默认返回第一个。
和AllWindowedStream#maxBy(int positionToMaxBy, boolean first)
和AllWindowedStream#maxBy(int positionToMaxBy, boolean first)
的javadocs解释了
如果〔first是〕true,则运算符返回具有最大值的第一个元素,否则返回最后一个