为了账号安全,请及时绑定邮箱和手机立即绑定

flink 是否在批处理模式下即时减少

flink 是否在批处理模式下即时减少

aluckdog 2021-09-03 17:38:50
根据 flink 流媒体文档:窗口函数可以是 ReduceFunction、FoldFunction 或 WindowFunction 之一。前两个可以更有效地执行(参见状态大小部分),因为 Flink 可以在每个窗口的元素到达时增量聚合它们。这同样适用于批处理模式吗?在下面的示例中,我正在从 cassandra 读取 ~36go 的数据,但我希望减少的输出要小得多(~0.5go)。运行此作业是否需要 flink 将整个输入存储在内存中,或者它是否足够智能以对其进行迭代DataSet<MyRecord> input = ...; DataSet<MyRecord> sampled = input         .groupBy(MyRecord::getSampleKey)         .reduce(MyRecord::keepLast);
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

根据有关Flink 中的 Reduce 操作文档,我看到以下内容:

应用于分组数据集的 Reduce 转换使用用户定义的 reduce 函数将每个组减少为单个元素。对于每组输入元素,reduce 函数将成对的元素连续组合成一个元素,直到每组只剩下一个元素。

请注意,对于 ReduceFunction,返回对象的键控字段应与输入值匹配。这是因为reduce 是隐式可组合的,并且从组合运算符发出的对象在传递给reduce 运算符时再次按键分组。

如果我没看错,Flink在映射器端执行 reduce 操作,然后在reducer端再次执行,因此实际发出/序列化的数据应该很小。


查看完整回答
反对 回复 2021-09-03
  • 1 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信