Connector

Flink 并不依赖 Kafka本身的offset管理,依赖自己的Checkpoint来记录当前offset位置 从系统故障中恢复。

Async I/O

EventTime的无序模式下,Watermark之间数据是无序的,但是两个Watermark不会乱序,保证Watermark正常工作。

Kafka Connector


KafkaDeserializationSchema

反序列化

设置

消费初始位置设置

如果有Checkpoint,Checkpoint优先,下面配置无效。

  1. FlinkKafkaConsumer.setStartFromGroupOffsets(); #从Kafka记录处读取(默认)。如果没有则根据auto.offset.reset选项设置。
  2. FlinkKafkaConsumer.setStartFromEarliest(); #最早
  3. FlinkKafkaConsumer.setStartFromLatest(); #最新
  4. setStartFromTimestamp(long); #指定读取什么时间之后
  5. setStartFromSpecificOffsets(); #指定每个Partition的具体offset位置

partition自动发现

设置后会启动线程定期检测kafka元数据。

  1. flink.partition-discovery.interval-millis: 1000 #默认是false

正则匹配多个Topic

也需要上诉参数开启。

  1. Pattern topicPattern = java.util.regex.Pattern.compile("topic[0-9]");

Offset管理

Checkpoint开关会有不同的管理方式

Checkpoint 关闭

Checkpoint 开启

Kafka Producer

分区策略