hi Flink 暂时没有全局 State 的概念,所有的 state 均指单并发下的 state。不过你可以用 broadcast state[1] 来模拟全局 state [1] https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/stream/state/broadcast_state.html Best, Congxian
a773807...@gmail.com <a773807...@gmail.com> 于2020年5月27日周三 下午3:47写道: > 不会,在第二次keyby的时候,根据id-name 做key, 然后做reduce, > 把重复的数据中的value,根据time去做判断,取time最小值的value,就可以去重了 > > > > a773807...@gmail.com > > 发件人: star > 发送时间: 2020-05-27 15:45 > 收件人: user-zh > 主题: 回复:回复:全局state > 感谢您的建议,但是这样数据会重复,翻倍。目前看好像只能依赖外部存储了 > > > > 发自我的iPhone > > > ------------------ 原始邮件 ------------------ > 发件人: a773807...@gmail.com <a773807...@gmail.com> > 发送时间: 2020年5月27日 11:32 > 收件人: user-zh <user-zh@flink.apache.org> > 主题: 回复:回复:全局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 去合并回来,就可以实现你的问题了 > > > > a773807...@gmail.com > > 发件人: 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 <wander4...@gmail.com&gt; > 发送时间: 2020年5月26日 19:01 > 收件人: user-zh <user-zh@flink.apache.org&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 >   > <https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/api_concepts.html#define-keys-using-key-selector-functions > > ; > Best, > tison. > > > star <3149768...@qq.com&gt; 于2020年5月26日周二 下午6:42写道: > > &gt; > 请问,有全局状态组件吗?我有一个需求需要对数据里的id和name做映射,也就是如果两条数据的id或者name相同则映射成一个值;现在只能使用operator > &gt; state,并且并行度设置为1,来实现全局state > &gt; > &gt; > &gt; 谢谢 > &gt; > &gt; 发自我的iPhone >