> 技术文档 > Flink框架:keyBy实现按键逻辑分区

Flink框架:keyBy实现按键逻辑分区


本文重点

我们要学习聚合算子,在介绍聚合算子之前,我们必须学会分区的概念,因为只有分区之后才可以进行聚合。

keyBy按键分区

如图所示,数据经过keyBy之后,keyBy会对每个元素计算一个key(然后对key、计算hashCode,必须要保证key具有hashCode方法),然后key的hashCode会对分区数取模得到分区索引。

如图所示,黄色数据元素经过keyby后得到key1,对分区数2取模得到第一个分区索引,蓝色数据元素经过keyby后得到key2,对分区数2取模后得到第一个分区索引,紫色数据元素经过keyby后得到key2,对分区数2取模后得到第二个分区索引。

这里我们可以看到三点:

第一,不同元素得到的key是不一样的

第二,相同元素得到的key是一样的,并且一定会分到同一个分区中

第三,同一个分区中会有不同的key

(关于分区的概念,我们可以理解为下游算子的并行子任务数,子任务数是几就有几个分区,每个子任务在不同的任务槽中运行,关于并行子任务和任务槽的概念,