Yahoo 今天开源了数据快速高效计算算法,基于 Java 的 Data Sketches 算法。 Data Sketches 遵循 Apache 开源授权协议提供在 GitHub:https://github.com/datasketches/sketches-core/。
这类型的技术在研究者的学术论文中出现的越来越多,总是使用不同的名字,但都会分享一些关键的技术点。首先就是可以处理流数据,因为这些数据他们只接触一次。他们是可附加的,你可以添加或者合并这些计算。更有趣的是,他们都是近似的。
雅虎方面发表声明说,这整个科学计算是基于很基础的功能,只要你能忍受结果有一点点偏差,那么完全可以大幅度提升计算的速度。
想象如果你想计算一些东西,比如一天中既访问雅虎财经又访问雅虎体育的人数。如果你尝试计算到底有多少人访问,是可以得到答案的 —— 只要你有充足的硬盘空间,内存和时间。这是非常困难的,Yahoo 很自然的就想优化这类型的计算。
除了高速计数之外,Data Sketches 做某些类型的计算会比精确计算快很多。1亿数值计算一般情况花费 2.5 分钟,而使用 Data Sketches 只需要 2.7 秒。
Data Sketches 已经在 Yahoo 的大量产品中使用,Yahoo 自身的 Flurry 使用它来计算实时计数,雅虎邮件服务和搜索引擎也在使用。
Data Sketches 集成了 Hive 和 Pig,还有 Druid 开源数据存储,在 Maven 构建管理工具中也很容易使用。
Data Sketches 文档提供在这里.,更多内容请看 Yahoo engineering Tumblr page。