全局state

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

全局state

star
请问,有全局状态组件吗?我有一个需求需要对数据里的id和name做映射,也就是如果两条数据的id或者name相同则映射成一个值;现在只能使用operator state,并且并行度设置为1,来实现全局state


谢谢

发自我的iPhone
Reply | Threaded
Open this post in threaded view
|

Re: 全局state

tison
任意并行度全局状态从物理上就是不可行的,你可以了解一下分布式计算系统怎么部署物理作业的。“全局状态”要么依赖外部存储要么依赖实现(部署)细节。

你这个需求能不能自定义 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 <[hidden email]> 于2020年5月26日周二 下午6:42写道:

> 请问,有全局状态组件吗?我有一个需求需要对数据里的id和name做映射,也就是如果两条数据的id或者name相同则映射成一个值;现在只能使用operator
> state,并且并行度设置为1,来实现全局state
>
>
> 谢谢
>
> 发自我的iPhone
Reply | Threaded
Open this post in threaded view
|

回复:全局state

Yichao Yang
hi
你的意思是说两条数据
第一条的id等于第二条的id
或者
第一条的name等于第二条的name
则映射成同一个
keyby的方式我不知道能不能满足你的需求


但我理解如果id和name不是随机的话,有映射关系的话可以尝试了解广播




------------------ 原始邮件 ------------------
发件人: tison <[hidden email]&gt;
发送时间: 2020年5月26日 19:01
收件人: user-zh <[hidden email]&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 <[hidden email]&gt; 于2020年5月26日周二 下午6:42写道:

&gt; 请问,有全局状态组件吗?我有一个需求需要对数据里的id和name做映射,也就是如果两条数据的id或者name相同则映射成一个值;现在只能使用operator
&gt; state,并且并行度设置为1,来实现全局state
&gt;
&gt;
&gt; 谢谢
&gt;
&gt; 发自我的iPhone
Reply | Threaded
Open this post in threaded view
|

回复:全局state

star
In reply to this post by tison
感谢您的回复,通过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 <[hidden email]&gt;
发送时间: 2020年5月26日 19:01
收件人: user-zh <[hidden email]&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 <[hidden email]&gt; 于2020年5月26日周二 下午6:42写道:

&gt; 请问,有全局状态组件吗?我有一个需求需要对数据里的id和name做映射,也就是如果两条数据的id或者name相同则映射成一个值;现在只能使用operator
&gt; state,并且并行度设置为1,来实现全局state
&gt;
&gt;
&gt; 谢谢
&gt;
&gt; 发自我的iPhone
Reply | Threaded
Open this post in threaded view
|

Re: 回复:全局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 去合并回来,就可以实现你的问题了



[hidden email]
 
发件人: 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 <[hidden email]&gt;
发送时间: 2020年5月26日 19:01
收件人: user-zh <[hidden email]&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 <[hidden email]&gt; 于2020年5月26日周二 下午6:42写道:
 
&gt; 请问,有全局状态组件吗?我有一个需求需要对数据里的id和name做映射,也就是如果两条数据的id或者name相同则映射成一个值;现在只能使用operator
&gt; state,并且并行度设置为1,来实现全局state
&gt;
&gt;
&gt; 谢谢
&gt;
&gt; 发自我的iPhone