返回介绍

Flink Extensions

发布于 2025-05-02 18:19:17 字数 1001 浏览 0 评论 0 收藏 0

有限的喷口

在 Flink 中,流处理源可以是有限的,即发出有限数量的记录并在发出最后一条记录后停止。但是,Spouts 通常会发出无限的流。两种方法之间的桥接是 FiniteSpout 除了 IRichSpout 包含 reachedEnd() 方法之外的接口,其中用户可以指定停止条件。用户可以通过实现此接口而不是(或另外)来创建有限 Spout IRichSpout ,并 reachedEnd() 另外实现该方法。与 SpoutWrapper 配置为发出有限数量的元组的 FiniteSpout 接口相比,接口允许实现更复杂的终止标准。

尽管有限的 Spout 不需要将 Spouts 嵌入到 Flink 流程序中或向 Flink 提交整个 Storm 拓扑,但有些情况下它们可能会派上用场:

  • 实现原生 Spout 的行为与有限 Flink 源相同,只需要很少的修改
  • 用户想要只处理一段时间; 之后,Spout 可以自动停止
  • 将文件读入流中
  • 用于测试目的

有限 Spout 的示例,仅发出 10 秒的记录:

public class TimedFiniteSpout extends BaseRichSpout implements FiniteSpout {
  [...] // implement open(), nextTuple(), ...

  private long starttime = System.currentTimeMillis();

  public boolean reachedEnd() {
    return System.currentTimeMillis() - starttime > 10000l;
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。