Apache flink 为什么用这种方法计算Flink的键的状态位置?
我正在阅读Flink源代码,了解如何计算键在数组中的状态位置,并找到由keyGroupIndex keyGroupOffset计算的状态位置,Apache flink 为什么用这种方法计算Flink的键的状态位置?,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我正在阅读Flink源代码,了解如何计算键在数组中的状态位置,并找到由keyGroupIndex keyGroupOffset计算的状态位置, 我的问题是: 为什么使用keyGroupIndex keyGroupOffset作为位置,为什么不直接使用状态[keyGroupIndex]呢 此外,我还发现了语句Map[]state=(Map[])new-Map[keyContext.getNumberOfKeyGroups()]为状态数组分配了键组的大小编号,如果直接使用状态[keyGroupInd
我的问题是:
Map[]state=(Map[])new-Map[keyContext.getNumberOfKeyGroups()]为状态数组分配了键组的大小编号
,如果直接使用状态[keyGroupIndex]
,它也应该是一对一映射
this.keyGroupOffset=keyContext.getKeyGroupRange().getStartKeyGroup();
@可视性测试
Map getMapForKeyGroup(int-keyGroupIndex){
最终int pos=索引偏移量(keyGroupIndex);
如果(位置>=0&&pos
其思想是,每个
statebend
负责完整密钥组范围的子集。因此,我们只需要为范围内的每个关键组存储一个状态映射。为了进行状态映射管理,我们规范化了关键组索引,使其以0
开头
但是,代码中有一个小错误,它为完整范围内的每个键组分配一个状态映射条目。这应该是固定的。这是相应的。谢谢您的帮助。