我正在尝试使用kinesis流处理事件执行1小时(3600秒TimeWindowSize)和5秒(TimeWindowSamplingFrequency)的滑动窗口, 但是我每5秒收到一次处理过的事件,它没有按照1小时的滑动窗口给我一小时的事件转换结果。
根据我的理解,它应该等待并处理来自kinesis流的1小时事件,然后在1小时后给我输出。
以下是我使用的示例代码
pipeline.apply(
KinesisIO.read()
.withStreamName(options.getEnrichedSnowplowEventsStreamName())
.withAWSClientsProvider(new DefaultAWSClientsProvider())
.withInitialPositionInStream(InitialPositionInStream.LATEST))
.apply(MapElements.into(TypeDescriptors.strings())
.via(record -> new String(record.getDataAsBytes())))
.apply(ParseSnowplowEvents.fromStrings())
.apply(a userdefined ParDo transform which gives an op of
PCollection<Class> objects )
.apply(Window
.into(SlidingWindows
.of(
Duration.standardSeconds(
3600))
.every(Duration.standardSeconds(
5))
)).apply(
a userdefined transform with ParDo which gives me the o/p of PCollection<KV<Integer, Double>>>)
.apply(PrintValue.andPassOn());
PrintValue.andPassOn()userdefined transform为我打印数据,但我期待结果PCollection&gt;在一小时滑动窗口结束时,它会在每5秒打印一次KV对
2018-06-17T13:11:29.999Z - KV {101,5.0}
2018-06-17T13:11:34.999Z - KV {102,0.4}
2018-06-17T13:11:39.999Z - KV {104,0.5}
任何帮助都会非常棒!!!
答案 0 :(得分:0)
根据您的采样频率进行打印。将其更改为一小时,它应该可以正常工作。