apache-flink - Flink,如果多条记录满足条件,minBy或maxBy的行为是什么
问题描述
我是 Flink 的新手,我想知道如果有多个记录具有最小值,那么 minBy 的行为是什么(猜测 maxBy 是一样的)。我注意到 Flink 在这种情况下只会输出一条记录,但是哪一条呢?第一个,最后一个还是随机的?
感谢帮助。
解决方案
请注意,从FLIP-134开始,所有这些在 DataStreams 上的关系方法,即Windowed/KeyedStream#sum,min,max,minBy,maxBy
计划被弃用。整个 DataSet API 也计划最终被弃用。
对此类关系方法的唯一长期支持是 Table 和 SQL API 提供的。
但是要回答您的问题, minBy 和 maxBy 的工作方式相同。
javadocDataSet#maxBy
说
如果在指定字段中存在多个具有最大值的值,则会随机选择一个。
而 javadocs for AllWindowedStream#maxBy(int positionToMaxBy)
and KeyedStream#maxBy(int positionToMaxBy)
say
如果更多元素具有相同的最大值,则运算符默认返回第一个。
AllWindowedStream#maxBy(int positionToMaxBy, boolean first)
以及用于AllWindowedStream#maxBy(int positionToMaxBy, boolean first)
解释的 javadocs
如果 [first is] true,则运算符返回具有最大值的第一个元素,否则返回最后一个
推荐阅读
- python-3.x - python中子进程内部的多处理
- echarts - 如何从 apache eCharts 中的 zRender 点击事件中确定时间轴值
- ios - 关闭后对前一个视图控制器的操作
- powershell - Powershell:HRESULT 异常:0x80131047 与类创建
- flutter - Flutter - 用于空值 _CastError 的空检查运算符
- homebrew - 自制更改前缀
- python - python api sdk脚本从Thycotic文件夹中提取所有分泌物
- javascript - 如何从ajax成功将数据传递给ejs标签?
- python - 在 JSON 之前删除不必要的 HTML
- cmake - 找不到 Boost(缺少:program_options unit_test_framework)(找到版本“1.75.0”)