【问题标题】:Apache Flink - End to End testing how to terminate input sourceApache Flink - 端到端测试如何终止输入源
【发布时间】:2018-12-16 23:32:06
【问题描述】:

我在批处理中使用 apache flink 有一段时间了,但现在我们想将此批处理作业转换为流式作业。我遇到的问题是如何运行端到端测试。

它在批处理作业中的工作原理

在使用批处理时,我们使用黄瓜创建了端到端测试。

  • 我们将填充我们从中读取的 hbase 表
  • 运行批处理作业
  • 等待它完成
  • 验证结果

流式作业中的问题

我们希望对流式作业执行类似的操作,但流式作业并未真正完成。

所以:

  • 填满我们从中读取的消息队列
  • 运行流式作业。
  • 等待它完成(如何?)
  • 验证结果

我们可以在每次测试后等待 5 秒钟,并假设所有内容都已处理,但这会大大减慢所有内容。

问题:

有哪些方法或最佳实践可以在流式 flink 作业上运行端到端测试,而不会在 x 秒后强制终止 flink 作业

【问题讨论】:

    标签: integration-testing apache-flink flink-streaming end-to-end data-stream


    【解决方案1】:

    大多数 Flink DataStream 源,如果它们从有限输入中读取,将在到达末尾时注入值为 LONG.MAX_VALUE 的水印,之后作业将终止。

    Flink training exercises 说明了一种对 Flink 作业进行端到端测试的方法。我建议克隆github repo 并查看测试是如何设置的。他们使用custom source and sink 并重定向输入和输出以进行测试。

    这个话题在documentation也有讨论。

    【讨论】:

      猜你喜欢
      • 2014-02-09
      • 2022-11-16
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 2017-04-01
      • 2015-02-07
      • 2014-04-07
      • 1970-01-01
      相关资源
      最近更新 更多