“分而治之”数据流算法


12

存在哪些对大型数据流起作用的有用算法,而且它们的结果还很小,并且可以通过某种方式合并它们的结果来计算两个流的混合结果?

我可以列举几个:

  • 很明显的东西,例如总和,最小值,最大值,计数,top-K等。
  • 近似的所谓“基于草图”的流算法,用于直方图,计数不同的项目或计算分位数

还有什么呢?

(我很感兴趣,因为我正在编写一个业余项目来监视分布式系统,其有效性直接取决于此类算法的有效性)


我发现很难想到任何不是“分而治之” /关联的流算法。也许某种滚动哈希函数...您是否有这种流算法的自然示例?
托马斯·阿勒

Answers:


9

Guha等。'03给出了流模型中k中值聚类的近似算法。他们的算法将数据划分为不相交的部分,为每个不相交的部分找到O(k)个中心,然后将结果合并以获得k个中心。这似乎是您要寻找的算法类型。


7

Bagchi,Chaudhary,Eppstein和Goodrich的论文使用基础子程序解决了许多流几何问题,这些子程序用于计算适当选择的范围空间的 -nets和逼近。该子例程通过开发层次结构方案来计算这些对象(这些虚拟级别流将虚拟级流,而0级是原始流)。这本质上是分而治之策略的自下而上的呈现。沿递归树的“边缘”进行更新。在结构上,它与列弗提到的Guha等人的论文非常相似。εε一世一世-1个


6

我发现了一篇论文(“分配与频率相关的数据流计算”),该数据流的频率分布的每个函数都是可合并的(尽管它没有为合并操作提供明确而有效的构造)。涉及环理论的证明似乎很有趣。需要阅读同一作者的前一篇论文(“数据流频率估计的下限”),其主要结果用作该论文的基础。

这让我想起了第三同构定理 ...


我认为,Ganguly论文并不暗示分而治之策略可以适用于流媒体。该模型似乎简化为Mapreduce / MUD模型,该模型中可能对数据进行多次传递。
Suresh Venkat 2010年

在阅读时,我似乎根本不使用多次通过。
jkff

4

对连续流查询语言的研究可能会提供一些见识。一种这样的语言是CQL,我相信Oracle会采用它。这些语言允许在流的滑动窗口(包括大小为1的窗口)上计算函数。该学士学位论文提供了对该语言的最新概述,包括一些示例。该给出了一些流处理语言,这应该是寻找链接到其他相关研究有用的概述。

我知道这并不能直接回答您的问题,但是应该使您与偏离同一起点的人们所做的研究保持联系。


4

这个问题对我来说似乎有点循环。如果问题具有所需的属性,则可以使用基于草图和合并的算法。如上所述,可以为您提供有关聚类,近似值和核心集的工作。而且,大多数流算法允许通过(在概念上)将一个流与另一个流串联来合并流。

另外,我不确定top-k流算法是否可以合并-但我可能错了。


Top-k可以很容易地合并:要合并k个项目的两个列表,您可以合并它们并获取结果的k个最后一个项目:)但是,也许您的意思是“最频繁的前k个”,但是我的意思是这个(也是有用的问题,例如用于像Facebook墙这样的分布式计算)
jkff

3

抱歉,对此进行了细微介绍,但我想您可能希望看一下有关流上的分布式连续监视的一些工作,在这些工作中,您将获得多个流,目标是在中央监视站点监视一些汇总统计信息,同时最大程度地减少通信。对我来说,模型听起来与您的动机密切相关。查看Muthu的书中的参考资料。其中一篇是这样

Ganguly的论文也非常有趣。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.