java - Flink 滑动窗口没有按预期工作

标签 java apache-flink flink-streaming sliding-window

我有一个数据流 1,2,3,4,5,6.....

我正在应用滑动计数窗口,如下所示

inputStream.keyBy("id").countWindow(2,1);

预期输出

1,2

2,3

3,4 ..

实际输出

1

1,2

2,3

3,4

为什么先滑动再累加窗口大小

最佳答案

首先,您提供的预期输出是错误的。您将窗口大小指定为 2 分钟。所以输出(假设它是一个窗口的开始和结束)应该是:

1:00:00, 1:01:00
1:01:00, 1:02:00

具有时间戳 1:00:00 的第一个事件应分配给窗口 (0:59:00, 1:01:00)( 1:00:00、1:02:00)。我相信这可以回答您的问题。

编辑后:

对于 countWindow 应用相同的规则。第一个元素属于两个窗口。使用 countWindow(4,2) 更容易推理。 看一个基本示例:

val sEnv = StreamExecutionEnvironment.getExecutionEnvironment
sEnv.setParallelism(1)

sEnv.fromCollection((1 to 10)).countWindowAll(4, 2).apply(
  (window, numbers, collector: Collector[Seq[Int]]) =>
    collector.collect(numbers.toSeq)
).print()

sEnv.execute()

输出是:

List(1, 2)
List(1, 2, 3, 4)
List(3, 4, 5, 6)
List(5, 6, 7, 8)
List(7, 8, 9, 10)

看到第一个元素所属的第一个窗口从过去开始。

关于java - Flink 滑动窗口没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43385652/

相关文章:

java - 使用汇合反序列化Apache Flink中的Avro

java - 当检查点发生时,flink广播状态不会保存到rocksdb?

flume - Apache Flume与Apache Flink的区别

apache-flink - flink key通过添加延迟;我怎样才能减少这个延迟?

apache-flink - 如何处理 Apache Flink 中的 transient /应用程序故障?

real-time - Apache 弗林克 : Multiple Window Aggregations and Late Data

java - context.xml 用于检索光盘问题 Tomcat/Java EE 上的资源

java - 确保 ConcurrentSkipListMap 内的并发性

java - 项目无法在 Netbeans 8.2 上运行

java - Spring Data - 至少必须存在一个 JPA 元模型