如果我理解正确的话,spark流是通过一组转换和转换后的输出操作将您的RDD批次管道化。这将对每个批处理执行,因此输出操作也将对每个批处理执行。但是,由于每次输出都非常昂贵,所以我想处理批次并累积结果,并且仅在某些事件(例如,在某个时间段之后)写出累积的结果并结束程序。
我知道我可以积累数据,例如与updateStateByKey
,但我不知道如何告诉Spark使用输出操作(例如saveAsTextFiles
)只有很久以后,当一些条件到达。
这可能吗?
这在flink中可能吗?
免责声明:我是Apache Flink的贡献者。
由于丰富的窗口语义,Flink应该可以做到这一点:http://ci.apache.org/projects/flink/flink-docs-master/apis/streaming_guide.html#window-operatorsFlink有很多预定义的窗口。此外,您还可以实现自己的窗口策略,以便在需要时获得自定义行为。