Flink 数据交换策略 Partitioner

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 数据交换策略 Partitioner相关的知识,希望对你有一定的参考价值。

传送门:Flink 系统性学习笔记


任务之间的数据交换策略决定了数据会分发到下游算子的哪个实例上,在 Flink 中有八种不同的策略,也称为分区器:

  • GlobalPartitioner
  • ForwardPartitioner
  • BroadcastPartitioner
  • ShufflePartitioner
  • RebalancePartitioner
  • RescalePartitioner
  • KeyGroupStreamPartitioner
  • CustomPartitionerWrapper


我们可以看到所有的 Partitioner 都继承了 StreamPartitioner 类。StreamPartitioner 继承自 ChannelSelector 接口。这里的 Channel 概念与 Netty 不同,只是 Flink 对于数据写入实例的简单抽象,我们可以直接认为它就是下游算子的并发实例(即物理分区)。所有 StreamPartitioner 的子类都要实现 selectChannel() 方法,用来选择发送到哪个实例。下面我们分别看看 Flin

以上是关于Flink 数据交换策略 Partitioner的主要内容,如果未能解决你的问题,请参考以下文章

Flink分区策略

Flink实战系列Flink SQL 写入 kafka 自定义分区策略

Spark自定义分区(Partitioner)

Flink 系统性学习笔记系列

数据写入kafka的分区策略

在 Kafka 连接器中设置分区策略