代码之家  ›  专栏  ›  技术社区  ›  0x26res

flink在批处理模式下会即时减少吗

  •  1
  • 0x26res  · 技术社区  · 6 年前

    窗口函数可以是ReduceFunction、FoldFunction或 窗口函数。前两个可以更有效地执行(参见 状态大小部分),因为Flink可以增量聚合 每个窗口到达时的元素。

    这是否适用于批处理模式?在下面的示例中,我从cassandra读取了约36go的数据,但我预计减少的输出会小得多(~0.5go)。运行这个作业需要flink将整个输入存储在内存中,还是只需迭代它就足够了

    DataSet<MyRecord> input = ...;
    DataSet<MyRecord> sampled = input
            .groupBy(MyRecord::getSampleKey)
            .reduce(MyRecord::keepLast);
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Pablo    6 年前

    documentation on the Reduce Operation

    使用用户定义的reduce函数将每个组转换为单个元素。 将成对的元素组合成一个元素,直到只有一个元素 保留每组的元素。

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

    地图绘制者 一边,一边 减速器 因此实际发出/序列化的数据应该很小。