#streaming #sketch #top-k

bin+lib heavykeeper

一个用于查找数据流中top-k元素的库

2个版本

0.2.2 2024年6月19日
0.2.1 2024年6月8日

#915 in 数据结构

Download history 138/week @ 2024-06-02 39/week @ 2024-06-09 185/week @ 2024-06-16 5/week @ 2024-06-23

每月82次下载

MIT/Apache

26KB
527

heavykeeper-rs

针对Top-K大象流的Top-K Heavykeeper算法

这是基于由Gong Junzhi, Yang Tong, Zhang Haowei, Li Hao, 北京大学;Uhlig Steve, 伦敦玛丽女王大学;Chen Shigang, 佛罗里达大学;Uden Lorna, 斯塔福德郡大学;Li Xiaoming, 北京大学撰写的论文HeavyKeeper: An Accurate Algorithm for Finding Top-k Elephant Flows

示例

请参阅ip_files.rs以了解如何使用该库来统计文件中的top-k IP流。

以下是一个示例用法

    // create a new TopK

    let mut topk = TopK::new(k, width, depth, decay);

    // add some items
    topk.add(item);

    // check the counts
    for node in topk.list() {
        println!("{} {}", String::from_utf8_lossy(&node.item), node.count);
    }

其他实现

Jigsaw-Sketch: 高速网络中查找top-k大象流的一个快速且准确的算法 张博宇, 黄鹤, 孙宇婵, 杜洋 & 王丹

运行

一个示例驱动程序,可以用作词频统计程序,可以在main.rs中找到。

用法

cargo build --release
target/release/heavykeeper -k 10 -w 8192 -d 2 -y 0.95 -f data/war_and_peace.txt

构建示例

cargo build --examples --release
target/release/examples/ip_files

许可证

本项目采用Apache/MIT许可证的双重许可。

依赖关系

~2.9–4MB
~65K SLoC