开发者社区> 问答> 正文

flink-connector-redis连接器upsert()模式插入问题

flink-connector-redis自定义连接器,在实现DynamicTableSink接口时, 通过重写getChangelogMode方法,设置ChangelogMode.upsert()模式,以更新的方式进行数据写入, 使用的窗口时cumulate函数 开1天的窗口,小窗口1分钟计算一次

问题: 测试发现,每1分钟都会输出一次,落地的数据一样, 根据upsert()模式,正常来说一样的数据应该不会触发redis存储,这个是什么情况?*来自志愿者整理的flink邮件归档

展开
收起
EXCEED 2021-12-02 15:55:55 848 0
1 条回答
写回答
取消 提交回答
  • 可以在接受 sink 数据的方法里 System.out.println 看看是否真的每分钟收到一次数据。

    如果是的话,应该是设置了 state ttl 的缘故。为了防止数据过期,group agg 就算每次收到同样的 key

    value,仍然会往下游发数据(详见 GroupAggFunction#processElement),所以这是一个预期行为。*来自志愿者整理的FLINK邮件归档

    2021-12-02 16:10:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis在唯品会的应用实践——架构演进与功能定制 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载