开发者社区> 问答> 正文

Flink kafka Producer的Producer 分区是什么?

Flink kafka Producer的Producer 分区是什么?

展开
收起
游客qzzytmszf3zhq 2021-12-07 20:19:12 455 0
1 条回答
写回答
取消 提交回答
  • 使用FlinkKafkaProducer往kafka中写数据时,如果不单独设置partition策略,会默认使用FlinkFixedPartitioner,该partitioner分区的方式是task所在的并发id对topic 总partition数取余:parallelInstanceId % partitions.length。此时如果sink为4,paritition为1,则4个task往同一个partition中写数据。但当sink task< partition 个数时会有部分partition没有数据写入,例如sink task为2,partition总数为4,则后面两个partition将没有数据写入。如果构建FlinkKafkaProducer时,partition设置为null,此时会使用kafka producer默认分区方式,非key写入的情况下,使用round-robin的方式进行分区,每个task都会轮训的写下游的所有partition。该方式下游的partition数据会比较均衡,但是缺点是partition个数过多的情况下维持过多的网络链接,即每个task都会维持跟所有partition所在broker的链接。

    2021-12-07 20:19:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载