具有多个 Kafka 源的 Apache Flink。确保在使用另一个主题的数据之前完全阅读一个主题

问题描述 投票:0回答:1

通过创建 GlobalKTable 来使用 Kafka Streams,我知道根据定义,该表将在其他源的流式传输开始之前完全填充。

我正在 Apache Flink 中寻找类似的功能。 主题一保存几乎静态的配置数据。我希望 Flink 在开始阅读主题二之前充分理解这个主题。 主题一包含~5条Mio记录,总大小约为600MB

有没有办法实现这一点,或者我是否需要缓冲主题二中的数据,直到获得主题一中的匹配数据?

apache-flink sequence kafka-topic
1个回答
0
投票

您可以探索几种途径来解决这个问题:

  • 通过状态处理器 API 进行引导
  • 使用混合源
  • 作业前初始化

通过状态处理器 API 进行引导

Flink 公开了一个 State Processor API,它允许您运行批处理过程,从而允许您播种作业中使用的状态。基本上读取整个主题,将其存储在与操作符关联的状态中,然后使用批处理过程中的状态运行“实际”作业(这样当它恢复时,它已经拥有所有状态数据并准备好使用)。 这是我最常用的方法。

使用混合源

我相信这是

混合源

旨在通过允许您顺序执行管道的某些部分来解决的问题。我想理论上你可以用它来加载你现有的状态,然后转向从其他地方读取/根本不读取。 作业前初始化

根据您所在州的规模(尽管大约 5M 条记录可能并非微不足道),您有时可以发出带外呼叫,在这种情况下,该呼叫将读取您的所有记录并将其传递给您工作中的特定操作员图形。再说一次 - 可能不是一个很好的方法,但它是可行的,尤其是在处理较小的源时。

© www.soinside.com 2019 - 2024. All rights reserved.