开发者社区> 问答> 正文

flink 算子中定义的对象内存 checkpoint时会保存到 state中吗

例如,自定义Aggregate函数,accumulator的 Set 中的内容会保存到state中么 代码如下:

public class AggregateResult implements Serializable {
    private String key;
    private Double result = 0.0;
    private Set<String> distinct;
}

public class DistinctCountFunction implements AggregateFunction<CalDetail, AggregateResult, AggregateResult> {

    @Override public AggregateResult createAccumulator() {
        AggregateResult result = new AggregateResult();
        result.setDistinct(new HashSet<>());
        return result;
    }

    @Override public AggregateResult add(CalDetail value, AggregateResult accumulator) {
        accumulator.setKey(value.getGroupKey());
        accumulator.getDistinct().add(value.getData());
        accumulator.setResult((double) accumulator.getDistinct().size());
        return accumulator;
    }

    @Override public AggregateResult getResult(AggregateResult accumulator) {
        return accumulator;
    }

    @Override public AggregateResult merge(AggregateResult a, AggregateResult b) {
    // 暂不处理
        return a;
    }
}

展开
收起
一人吃饱,全家不饿 2020-01-09 10:44:40 3562 0
3 条回答
写回答
取消 提交回答
  • 目前从事大数据开发,兼顾平台搭建以及实时数据分析,主要是用scala编写程序,涉及社区开源hadoop集群,emr集群,欢迎有相同兴趣的小伙伴来交流,共同进步。最近在参与flink-java实时开发。

    只要是set中的数据参与计算,就会被记录,这就是我们为什么会使用状态。但是具体怎么存储的还不是很清楚。

    2020-01-09 10:47:16
    赞同 展开评论 打赏
  • 不断奔跑的开发者

    不会

    2020-01-09 10:46:42
    赞同 展开评论 打赏
  • 技术架构师 阿里云开发者社区技术专家博主 CSDN签约专栏技术博主 掘金签约技术博主 云安全联盟专家 众多开源代码库Commiter

    推荐文章,https://blog.csdn.net/aa1215018028/article/details/93159049,里边写的很细

    2020-01-09 10:46:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink峰会 - 李佳林 立即下载
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载