我正在处理数据流的apache flink,我有几个问题。任何帮助是极大的赞赏。谢谢。Flink窗口和状态维护
1)创建翻滚窗口是否有任何限制。例如,如果我想为每个用户ID创建一个滚动窗口2秒,并且假设我有超过1000万个用户ID,那会是一个问题。 (我使用keyBy用户ID,然后创建timeWindow 2秒)?这些窗口如何在flink内部维护?
2)我看着重新平衡循环分区。假设我设置了一个集群,并且如果我的源并行度为1,并且如果我进行了重新平衡,我的数据是否会跨机器混洗以提高性能?如果是这样,是否有一个特定端口用于将数据传输到集群中的其他节点?
3)状态维护有没有限制?我打算保留一些用户ID相关的数据,这些数据可能会变得非常大。我读了关于flink使用rocks db来维护状态。只是想检查一下可以维护多少数据是否有任何限制?
4)还有,如果数据量较少,状态是否维持? (我猜在JVM内存中)如果我的集群上有几台机器,每个节点都可以获得当前的状态版本?
非常感谢您的回答。我只是有一些后续问题。 – Neoster
如果运算符状态不是全局的,那么可以说,如果我想维护一个子任务本地的以前的计算状态,那么有没有办法确保下一个数据进入同一个用户id进入同一个子任务?如果没有,那么你是否应该使用集中式缓存来实现这一目标,而不是维护flink中的状态? – Neoster
另外我试图找到一种方法将外部配置更改发送到flink。例如,对于每个计算,都有很少的参数需要考虑。比方说,一个新的参数被添加,必须考虑新的计算,那么有没有办法将这个改变发送到flink并且具有集中配置状态? – Neoster