Flink Kafka Consumer继承了FlinkKafkaConsumerBase抽象类,而FlinkKafkaConsumerBase抽象类又继承了RichParallelSourceFunction,所以要实现一个自定义的source时,有两种实现方式:一种是通过实现SourceFunction接口来自定义并行度为1的数据源;另一种是通过实现ParallelSourceFunction接口或者继承RichParallelSourceFunction来自定义具有...
FlinkKafkaConsumer继承了FlinkKafkaConsumerBase,FlinkKafkaConsumerBase继承了RichParallelSourceFunction,FlinkKafkaConsumer构造方法还是主要调用了父类的构造方法。首先来分析一下FlinkKafkaConsumerBase public abstract class FlinkKafkaConsumerBase<T> extends RichParallelSourceFunction<T> implements CheckpointListener, ResultT...
> sourceOperator = new StreamSource<>(function);这里的function 就是传入的 FlinkKafkaConsumer 对象,StreamSource 构造函数中将这个对象传给父类 AbstractUdfStreamOperator 的 userFunction 变量,源码如下: ■ StreamSource.java public StreamSource(SRC sourceFunction) { super(sourceFunction); this.chainingStrategy...
消费kafka topic 最为重要的部分就是对 offset 的管理,对于 kafka 提交 offset 的机制,可以参考 kafka 官方网。 而在flink kafka source 中 offset 的提交模式有3种: public enum OffsetCommitMode { /** Completely disable offset committing. */ DISABLED, /** Commit offsets back to Kafka only when chec...
1.Flink-kafka-source 源码解析 流程概述 一般在 Flink 中创建 kafka source 的代码如下: StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); //KafkaEventSchema为自定义的数据字段解析类 env.addSource(new FlinkKafkaConsumer<>("foo", new KafkaEventSchema(), properties) ...
FLIP-27: Refactor Source Interface - Apache Flink - Apache Software Foundation提出了新的Source架构。该新架构的分析请参见Flink 源码之新 Source 架构。针对这个新架构,Flink社区新推出了新的Kafka connector -KafkaSource。老版本的实现FlinkKafkaConsumer目前被标记为Deprecated,不再推荐使用。本篇展开KafkaSource的...
KafkaConsumer<String,String>consumer=newKafkaConsumer<>(props);consumer.poll(Duration.ofMillis(100)); 本文将介绍flink从env.addSource方法最终调用到consumer.poll方法的过程。 源码分析 初始化 初始化执行env.addSource的时候会创建StreamSource对象,即final StreamSource<OUT, ?> sourceOperator = new StreamSource...
在Flink1.12基于Flip-27的新KafkaSource源码浅析(一)——Bounded Or UnBounded的最后部分,我们看到在启动阶段,Enumerator向Reader发送读取哪一部分partition的通知,这节我们就用一个例子来讲如何通过修改源码去发送自定义的事件。 我会先从Reader的读取讲起,这是上次没有讲解的基础,然后讲解Reader端如何发送消息,接收消息...
简介:本文基于 Flink 1.9.0 和 Kafka 2.3 版本,对 Flink Kafka source 和 sink 端的源码进行解析,主要分为 Flink-kafka-source 源码解析、Flink-kafka-sink 源码解析两部分。 Flink kafka source & sink 源码解析 原创 吴鹏 Flink 中文社区 4天前
kafka source -> flatmap keyed aggregation -> sink 我们就按这个顺序来捋一下checkpoint的过程。 1.kafka source的checkpoint过程 public final void snapshotState(FunctionSnapshotContext context) throws Exception { if (!running) { LOG.debug("snapshotState() called on closed source"); } else { union...