Apache允许我在RichMapFunction中使用状态。我计划建立一个持续运行的作业,分析一个网络事件流。处理的一部分将是创建具有会话作用域度量的会话上下文(如会话的第n个、持续时间等),另外还要创建一个用户上下文。
会话上下文将在30分钟后超时,但用户上下文可能存在一年以处理返回的用户。
将有数以百万计的会话和用户,所以我将以数以百万计的个人状态结束。每个州的大小只有几KB。
发布于 2019-01-16 16:24:19
对于大状态,我建议使用Flink的RocksDBStateBackend。此状态后端使用RocksDB存储状态。由于RocksDB优雅地溢出到磁盘,所以它仅受可用磁盘空间的限制。因此,Flink应该能够处理您的用例。
现在,您需要注册计时器来清理状态。但是,在下一个Flink发行版之后,社区将添加用TTL清理状态。这样,当状态过期时,它将自动清除。
使用持久化的周期性检查点使您的状态接近计算,这将使您的应用程序保持快速。如果每个状态访问都进入一个远程KV集群,它将大大减慢处理速度。
https://stackoverflow.com/questions/54220320
复制相似问题