代码之家  ›  专栏  ›  技术社区  ›  Richard Deurwaarder

ApacheFlink端到端测试如何终止输入源

  •  1
  • Richard Deurwaarder  · 技术社区  · 6 年前

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

    它是如何在批量作业中工作的

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

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

    流作业中的问题

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

    所以:

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

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

    问题:

    在流式Flink作业上运行端到端测试而不强制在X秒后终止Flink作业的一些方法或最佳实践是什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   David Anderson    6 年前

    大多数Flink数据流源如果从有限的输入中读取数据,则会在到达末尾时注入一个值为long.max_值的水印,之后作业将终止。

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

    这个主题在 documentation .