Flink框架:keyBy实现按键逻辑分区
本文重点
我们要学习聚合算子,在介绍聚合算子之前,我们必须学会分区的概念,因为只有分区之后才可以进行聚合。
keyBy按键分区
如图所示,数据经过keyBy之后,keyBy会对每个元素计算一个key(然后对key、计算hashCode,必须要保证key具有hashCode方法),然后key的hashCode会对分区数取模得到分区索引。
如图所示,黄色数据元素经过keyby后得到key1,对分区数2取模得到第一个分区索引,蓝色数据元素经过keyby后得到key2,对分区数2取模后得到第一个分区索引,紫色数据元素经过keyby后得到key2,对分区数2取模后得到第二个分区索引。
这里我们可以看到三点:
第一,不同元素得到的key是不一样的
第二,相同元素得到的key是一样的,并且一定会分到同一个分区中
第三,同一个分区中会有不同的key
(关于分区的概念,我们可以理解为下游算子的并行子任务数,子任务数是几就有几个分区,每个子任务在不同的任务槽中运行,关于并行子任务和任务槽的概念,