创建了多少个 Flink Functions 实例?
How many instances of Flink Functions is created?
假设以下管道:
input.filter(new RichFilterFunction<MyPojo>() {
@Override
public boolean filter(MyPojo value) throws Exception {
return false;
}
});
将创建多少个上述丰富函数的实例?
- 每个任务无一例外
- 每个任务,但是特定节点上的所有并行任务共享一个实例,因为它们是一个 JVM 实例的一部分
实例的数量总是与并行度指示的一样多。与状态相关的原因有两个:
- 如果您的函数保持状态,尤其是在键控上下文中,共享实例会导致意外的副作用。
- 早期,用户喜欢维护自己的状态(例如,记住之前的值)。即便如此,强烈建议不要这样做,但如果 Flink 不支持它,那仍然很糟糕。
假设以下管道:
input.filter(new RichFilterFunction<MyPojo>() {
@Override
public boolean filter(MyPojo value) throws Exception {
return false;
}
});
将创建多少个上述丰富函数的实例?
- 每个任务无一例外
- 每个任务,但是特定节点上的所有并行任务共享一个实例,因为它们是一个 JVM 实例的一部分
实例的数量总是与并行度指示的一样多。与状态相关的原因有两个:
- 如果您的函数保持状态,尤其是在键控上下文中,共享实例会导致意外的副作用。
- 早期,用户喜欢维护自己的状态(例如,记住之前的值)。即便如此,强烈建议不要这样做,但如果 Flink 不支持它,那仍然很糟糕。