我想使用Flink进行实时过滤。 我们的想法是将密钥值存储为累加器,并计算所有密钥的总和与比率。
我知道在密钥操作员之间共享状态是不可能的,因此我无法计算总价值
示例:
我需要在流上计算以下比率 1 / 1,3 / 4,2 / 5,8 / 10,0(总是被过滤)等......
感谢您的帮助
答案 0 :(得分:1)
使用以下状态创建自定义有状态运算符:
int totalSum;
Map<Key,Ratio> map;
每个事件都会增加总和,然后根据事件键更新地图。
示例:
在第一个事件k1,1
之后,你的州是:
totalSum 1
map
k1, 1/1
你发出了这个事件:k1, 1/1
==
在第二个事件k2,3
之后,你的州是:
totalSum 4
map
k1, 1/1
k2, 3/4
你发出了这个事件:k2, 3/4
[..继续]