我正在使用Flink CEP模块,想知道是否将一个函数传递给where子句,该子句将返回Boolean,无论它是否可以以分布式方式工作。
示例-:
val pattern= Pattern.start("begin").where(v=>booleanReturningFunction(v))
以简单条件提交给CEP的flink作业时,以上代码将以分布式方式工作。
答案 0 :(得分:0)
Yuval已经在评论中给出了正确答案,但我想在此进行扩展:
是的,您提供的任何功能都可以以分布式方式运行。首先,正如Yuval指出的那样,在提交作业后,所有代码都将分布在计算集群上。
所缺少的是您的工作本身也得到了分配。如果您检查API,则会在界面中看到它:
@Repository
public class Table1Repository {
@Autowired
private MongoTemplate mongoTemplate;
}
模式需要某些条件。如果查看其定义,可以看到以下内容
public Pattern<T, F> where(IterativeCondition<F> condition) { ...
因此,您传递给public abstract class IterativeCondition<T> implements Function, Serializable { ... }
的东西必须是where
。您的客户端可以序列化包括所有函数定义在内的整个作业,并将其发送到JobManager,后者将其分发到不同的TaskManager。因为基础结构的每个部分都有您的工作罐,所以它可以反序列化包括您的功能在内的工作。反序列化还意味着它会创建函数的副本,这对于分布式执行是必需的。