【问题标题】:Add Savepoint to Datastream将保存点添加到数据流
【发布时间】:2019-06-11 19:07:24
【问题描述】:

我有一个 kafka 源,我的 flink 应用程序从中读取数据并处理它,我想添加 flink 的保存点机制,以便从上次离开的地方恢复进程,而不是向 kafka 源添加保存点我想要我的应用程序来维护上次处理的流的状态,以便它不会重新处理我的应用程序正在部分处理的数据。

我已经向 kafka 源添加了保存点,它恢复了 kafka 流,但是我想恢复我处理过的数据流

 DataStream<String> streamOfStrings = env.addSource(new FlinkKafkaConsumer010<>(topicname));

我的字符串流被进一步传递给另一个进程,该进程被转换为对象的数据流。我希望只维护已处理流的状态,而不是维护 kafka 流。有没有办法将保存点附加到数据流

 DataStream<Object> streamOfObject = App.convertToObject(streamOfStrings);

【问题讨论】:

  • 您是否接受 convertToObject 的至少一次语义?

标签: java apache-flink flink-streaming flink-cep


【解决方案1】:

一些澄清...

  1. 即使您要维护下游状态,Kafka 源也必须维护一些状态才能知道它已经消耗了多少主题;当您从检查点或保存点重新启动时,它必须重播从最后一个数据进入保存状态的时间开始的所有数据,以及当前可用的数据。
  2. 您要保存的任何状态都需要有一定的持续时间(通常是时间限制),这样它就不会无限制地累积,对吗?

我能想到的最简单的方法是将您的App.convertToObject() 方法转换为实现[ListCheckpointed][1] 接口的适当函数。您可以将每个转换后的对象保存到一个列表中,但有一定限制(请参阅同一页面上的 BufferingSink 示例)。

【讨论】:

    猜你喜欢
    • 2018-02-15
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2018-05-26
    相关资源
    最近更新 更多