有没有办法在Apache Flink的地图中获取taskManager Id?

时间:2016-06-23 17:44:08

标签: apache-flink

在Apache Flink中使用自定义分区,我们为每个要分配给特定任务管理器的记录指定密钥。

考虑我们向所有节点,任务管理员广播数据集。在地图或faltmap中是否有任何时间来获取taskmanagef Id?

1 个答案:

答案 0 :(得分:3)

自定义分区程序不会将记录分配给TaskManager,而是分配给后续运算符的特定并行任务实例(TM可以执行同一运算符的多个并行任务实例)。

您可以访问并行任务实例的ID,扩展RichFunction,例如,扩展RichMapFunction而不是实现MapFunction。丰富的功能可用于所有转换。 RichFunction可以访问RuntimeContext,告诉您并行任务实例的ID:

public static class MyMapper extends RichMapFunction<Long, Long> {

    @Override
    public void open(Configuration config) {
        int pId = getRuntimeContext().getIndexOfThisSubtask();
    }

    @Override
    public Long map(Long value) throws Exception {
        // ...
    }
}