我有一个kafka源,我的flink应用程序可以从中读取数据并进行处理,我想添加flink的savepoint机制,以便从上次保留的位置恢复该过程,而不是将savepoint添加到kafka源中,我想要应用程序以维护最后处理的流的状态,以便它不重新处理我的数据,而我的数据正在被我的应用程序部分处理。
我向kafka源添加了保存点,该源可以恢复kafka流,但是我想恢复已处理的数据流
DataStream<String> streamOfStrings = env.addSource(new FlinkKafkaConsumer010<>(topicname));
我的字符串流进一步传递给另一个进程,该进程被转换为对象的数据流。我希望只保留已处理流的状态,而不要保留kafka流。有什么办法可以将保存点附加到数据流上
DataStream<Object> streamOfObject = App.convertToObject(streamOfStrings);
答案 0 :(得分:0)
一些澄清...
我能想到的最简单的方法是将App.convertToObject()
方法转换为实现[ListCheckpointed][1]
接口的适当函数。您将每个转换后的对象保存到列表中,但不超过一定限制(请参见同一页面上的BufferingSink示例)。