根据Flink的文档和源代码,sinks不会将从流缓冲的项目存储到检查点状态中。
具体来说,sinks在处理流数据时,会将每个接收到的元素立即发送到外部系统,不会将其缓冲在内存中。这意味着,即使在发生故障时,sinks也不需要在检查点状态中存储任何项目。
以下是一个简单的代码示例,演示如何在Flink中使用sink来写入数据到外部系统(例如,Kafka):
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// create a stream of events
DataStream events = env.addSource(new EventSource());
// write events to Kafka
events.addSink(new FlinkKafkaProducer(
"my-topic", // Kafka topic
new EventSchema(), // serialization schema
kafkaProperties)); // properties for Kafka producer
// execute the job
env.execute("Write events to Kafka");
在这个例子中,我们使用FlinkKafkaProducer作为sink,将事件流写入Kafka。每次接收到一个事件,都会立即发送到Kafka,而不会将其缓冲在Flink的内存中。因此,我们不需要在检查点状态中存储任何项目。