感谢您的建议,但是这样数据会重复,翻倍。目前看好像只能依赖外部存储了
发自我的iPhone ------------------ 原始邮件 ------------------ 发件人: [email protected] <[email protected]> 发送时间: 2020年5月27日 11:32 收件人: user-zh <[email protected]> 主题: 回复:回复:全局state Hi 我想到一个方案,你可以参考一下 源数据: id:1,name:A,value:A1, time: t1 id:2,name:A,value:A2, time: t2 id:1,name:B,value:A3, time: t3 经过flatMap后: id-name: 1-A, key: 1, value: A1, time: t1 id-name: 1-A, key: A, value: A1, time:t1 id-name: 2-B, key: 2, value: A2, time: t2 id-name: 2-B, key: B, value: A2, time: t2 id-name: 1-B, key: 1, value: A3, time:t3 id-name: 1-B, key: B, value: A3, time:t3 然后根据key做keyBy,里面keyBy里面的state,根据时间获取对应的value 然后再做一次keyby,不过是根据id-name 去合并回来,就可以实现你的问题了 [email protected] 发件人: star 发送时间: 2020-05-27 00:05 收件人: user-zh 主题: 回复:全局state 感谢您的回复,通过keyby细节实现有点难. id:1,name:A,value:A1 id:2,name:A,value:A2 id:1,name:B,value:A3 以上三条记录,第一条最先到达,后面两条到达后发现id或者name和第一条的id或者name一致value就取第一条的值。 输出: id:1,name:A,value:A1 id:2,name:A,value:A1 id:1,name:B,value:A1 原来的想法是存一个map,map的key是id或者name,value是对应的value值;例如上面例子对应的mapstate对应的k,v: key:1,value:A1 key:A,value:A1 key:2,value:A1 key:B,value:A1 发自我的iPhone ------------------ 原始邮件 ------------------ 发件人: tison <[email protected]&gt; 发送时间: 2020年5月26日 19:01 收件人: user-zh <[email protected]&gt; 主题: 回复:全局state 任意并行度全局状态从物理上就是不可行的,你可以了解一下分布式计算系统怎么部署物理作业的。“全局状态”要么依赖外部存储要么依赖实现(部署)细节。 你这个需求能不能自定义 KeyBy 细节(KeySelector)来实现?相关文档见 https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/api_concepts.html#define-keys-using-key-selector-functions Best, tison. star <[email protected]&gt; 于2020年5月26日周二 下午6:42写道: &gt; 请问,有全局状态组件吗?我有一个需求需要对数据里的id和name做映射,也就是如果两条数据的id或者name相同则映射成一个值;现在只能使用operator &gt; state,并且并行度设置为1,来实现全局state &gt; &gt; &gt; 谢谢 &gt; &gt; 发自我的iPhone
