flink kafka 消费以及生产并行度设置
1 flink consumer kafka数据2 flink producer kafka数据刚确认了下:配置keyby ,走fixed策略 ,保证消息有序; 不用keyby, 用robin策略
·
相同点都是 前面并行度 % 后面并行度 ,也就是要求前面并行度>=后面并行度
1 flink consumer kafka数据
mod(kafka partiton) % (flink 并行度)
1.1 kafka = flink 并行度
一对一的关系
1.2 kafka > flink
flink 每个并行度会可能消费多个kafka分区数据
1.3 kafka < flink
flink 某个并行度肯定会没有数据消费
2 flink producer kafka数据
配置keyby ,走fixed策略 ,保证消息有序;
不用keyby, 用robin策略
2.1 用 Robin 的方式写入 Kafka
- 1、实现 exactly-once 语义的 kafka sink,用 Robin 的方式写入 Kafka
- 2、flink 会把 一个 sink subtask 的数据以 round-robin 方式写入 kafka 的各个分区
- 3、注意:使用此方法可以不用设置 sink 的并行度
2.2 fixedPartition
flink sink之前每个并行度都是已经特定key by column的数据了,消息有序。
- 1、实现 exactly-once 语义的 kafka sink
- 2、fixedPartition: 一个 kafka partition 对应一个 flinkkafkaproducer。配置该种方式时,flink kafka producer 并行度应该不小于写入的 kafka topic 分区数,否则会导致有些分区没有数据
-
flink写入kafka默认采用的分区策略的代码实现在FlinkFixedPartitioner这个类中,并不是我们理解的轮盘转方式写入下游分区,而是每个并发固定的写入到kafka的某个分区,举个例子:flink有3个sink并发写入kafka,而kafka有10个分区,那么数据只会写入kafka的0-2号分区中,其他分区不会有数据。
更多推荐
已为社区贡献1条内容
所有评论(0)