Flink Unit Test over ProcessWindowFunction<IN, OUT, KEY, W>
Posted
技术标签:
【中文标题】Flink Unit Test over ProcessWindowFunction<IN, OUT, KEY, W>【英文标题】: 【发布时间】:2020-08-13 18:24:34 【问题描述】:如何为有状态流程函数创建单元测试。我有这样的事情:
private static SingleOutputStreamOperator<Tuple> methodName(KeyedStream<Event, String> stream)
return stream.window(TumblingEventTimeWindows.of(Time.minutes(10)))
.process(new ProcessFunction());
和
ProcessFunction extends ProcessWindowFunction<IN, OUT, KEY, W>
我在 Flink 页面中找到的所有 Harness 测试都是从 KeyedProcessFunction 扩展而来的,这不是我的情况。 谢谢。 亲切的问候!
【问题讨论】:
只是一个评论:因为 Flink 已经有一个名为 ProcessFunction 的公共类,如果你给你的类起一个不同的名字就不会那么混乱了。 嗨!你找到任何解决方案了吗?我找不到任何用于测试ProcessWindowFunction.
的文档。
嗨@Vin。没什么人。
【参考方案1】:
通常,这些测试工具期望测试操作员,而不是用户功能。所以在ProcessWindowFunction
的情况下,你需要首先创建一个合适的窗口操作符来传递给测试工具。
您可以使用OneInputStreamOperatorTestHarness
来测试ProcessWindowFunction
,并在ProcessWindowFunction
周围包裹一个WindowOperator
。恐怕这不是特别简单,但我可以向您推荐https://github.com/apache/flink/blob/release-1.11/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/operators/windowing/WindowOperatorTest.java#L437 作为示例。
来自 Ververica 的 Apache Flink 培训课程涵盖了测试 (https://training.ververica.com/decks/testing),其中包含有关如何使用这些测试工具的更多信息。
【讨论】:
能否请您举一个简单、基本的测试 Flink 窗口功能的例子?特别是SlidingProcessingTimeWindows
函数。我查看了这些代码 sn-ps,但它们对我来说似乎相当复杂。我无法将它们应用到我的项目中。我还尝试使用自定义接收器对窗口功能进行单元测试,但在输出中没有得到任何结果。 Flink 文档中也没有任何关于测试窗口函数的内容。我在任何地方都找不到测试 Flink 窗口函数的非常基本的示例。以上是关于Flink Unit Test over ProcessWindowFunction<IN, OUT, KEY, W>的主要内容,如果未能解决你的问题,请参考以下文章
flink笔记16 flink table windows(Group Windows/Over Windows)
flink笔记16 flink table windows(Group Windows/Over Windows)
flink笔记16 flink table windows(Group Windows/Over Windows)
Flink 极简教程: 架构及原理 Apache Flink® — Stateful Computations over Data Streams
Apache Flink®极简教程: 架构及原理 Stateful Computations over Data Streams