公司企业网站,app制作教程培训,网络优化论文,查logo的网站背景
在flink中#xff0c;我们经常使用kafka作为flink的数据汇#xff0c;也就是目标数据的存储地#xff0c;然而当我们使用FlinkKafkaProducer作为数据汇连接器时#xff0c;我们需要注意一些注意事项#xff0c;本文就来记录一下
使用kafka数据汇连接器
首先我们看…背景
在flink中我们经常使用kafka作为flink的数据汇也就是目标数据的存储地然而当我们使用FlinkKafkaProducer作为数据汇连接器时我们需要注意一些注意事项本文就来记录一下
使用kafka数据汇连接器
首先我们看一下常用的使用的情况 public FlinkKafkaProducer(String topicId,SerializationSchemaIN serializationSchema,Properties producerConfig) {this(topicId,serializationSchema,producerConfig,//不指定分区器时kafka默认使用FlinkFixedPartitioner分区器Optional.of(new FlinkFixedPartitioner()));}可以看到在不指定分区器时kafka默认使用FlinkFixedPartitioner作为分区器我们查看一下FlinkFixedPartitioner的分区逻辑 public int partition(T record, byte[] key, byte[] value, String targetTopic, int[] partitions) {Preconditions.checkArgument(partitions ! null partitions.length 0,Partitions of the target topic is empty.);// 根据算子的任务索引号进行求余return partitions[parallelInstanceId % partitions.length];}可以看到同一个算子任务的记录都只会发送到同一个kafka分区上当分区数大于算子任务数时可以确定的是有一些分区是没有记录的那你可能会问有些分区没有记录有什么问题