Apache flink 如何知道本地窗口属于哪个子任务

Apache flink 如何知道本地窗口属于哪个子任务,apache-flink,Apache Flink,可以知道本地窗口在flink流媒体中属于哪个子任务吗?我想在TriggerPolicy实现中使用getRuntimeContext().GetIndexOfthissSubTask()方法。目前无法获取子任务的索引,带有TriggerPolicy的窗口操作符正在该子任务上运行 但是,您可以通过在上游放置map操作来解决此问题,该操作将子任务的当前索引分配给每个数据元素 DataStream ds=env.fromElements( 新元组2(1,“a”), 新元组2(2,“b”), 新元组2(1

可以知道本地窗口在flink流媒体中属于哪个子任务吗?我想在
TriggerPolicy
实现中使用
getRuntimeContext().GetIndexOfthissSubTask()
方法。

目前无法获取子任务的索引,带有
TriggerPolicy
的窗口操作符正在该子任务上运行

但是,您可以通过在上游放置
map
操作来解决此问题,该操作将子任务的当前索引分配给每个数据元素

DataStream ds=env.fromElements(
新元组2(1,“a”),
新元组2(2,“b”),
新元组2(1,“c”),
新元组2(2,“d”);
ds.groupBy(0)
.map(新的RichMapFunction(){
@凌驾
公共Tuple3映射(Tuple2 integerStringTuple2)引发异常{
返回新的Tuple3(
getRuntimeContext().GetIndexOfthissSubTask(),
integerStringTuple2.f0,
integerStringTuple2.f1);
}
})
.window(新建TestingTriggerPolicy(),新建TestingVictotionPolicy())
.mapWindow(新的WindowMapFunction(){
@凌驾
公共void映射窗口(Iterable Iterable,收集器收集器)引发异常{
StringBuilder=新的StringBuilder();
for(Tuple3元素:iterable){
append(element.toString()+“;”);
}
collector.collect(builder.toString());
}
})

谢谢,我只知道本地窗口及其下游操作符(例如mapWindow)是在一个线程中串行处理的。@张胜雄,被一个或多个线程处理在这里不是问题。您必须避免的是数据混乱,它会破坏元素的分区,从而破坏元素到子任务索引的映射。但只要你使用本地窗口,这就不会是问题。