通常在火花流中,可以在事件驱动的pardigm中进行转换(过滤,映射等)或输出操作(collect
,forEach
等)(即仅发生动作)如果收到消息)。
是否可以以基于轮询的方式每隔几秒执行一次操作,无论是否收到新邮件?
在我的用例中,我将过滤掉一个流,然后对此过滤的流执行操作。但是,即使流中没有收到消息,我也希望每隔几秒对流中的数据进行操作。
例如,我有以下流,只有在完成微批处理时才会调用violationChecking()
函数。从本质上讲,这也意味着我必须在此流中接收一条消息来进行处理。我有什么方法可以每隔10秒做同样的操作吗?
sortedMessages.foreach(
new Function<JavaRDD<Tuple5<Long, Integer, String, Integer, Integer>>, Void>() {
@Override
public Void call(JavaRDD<Tuple5<Long, Integer, String, Integer, Integer>> tuple5JavaRDD) throws Exception {
List<Tuple5<Long, Integer, String, Integer, Integer>> list = tuple5JavaRDD.collect();
violationChecking(list);
return null;
}
});