我正在处理流数据(使用Java和Apache Flink(,我想执行异常值检测。我有一个网络,每个传感器接收一个流。 然后,他们将流的采样版本发送到"leader"节点,该节点组合所有样本并生成全局模型。
之后,它将全局模型发送给每个孩子。孩子们将使用此模型来检测异常值。 这必须以连续的方式发生(即,每次领导者收到x个样本时,它都会更新模型并广播它(。
我在论文/方法中遇到的问题是,为了构建模型,我需要拥有所有数据,而这是不可能的。领导者存储它收到的所有样本也是不可行的。
我正在写一个小例子:
传感器 A 接收一些数据并将其发送给领导者
传感器 B 接收一些数据并将其发送给领导者
领导者使用收到的值来构建广播的模型。
两个传感器接收其他数据,对于每个值,它们使用接收到的模型来执行异常值检测。 然后他们将新数据发送给领导者。
领导者更新模型并将新更新的模型发送给子模型。
我可以使用哪种方法让我获得此类行为?
一旦这样做,就会让领导者将模型更新写入 Kafka 主题,并让 A 和 B 从 Kafka 读取这些模型更新(除了他们的传感器流(。
更新:
一种相当简单的检测异常值/异常的算法非常适合流是 t-digest(是的,它是增量工作的(。来自mapr的此页面将引导您了解更多信息。