10GB 内存跑百亿级图算法:DataFusion 真香
Algorithms on billion-scale graph using 10GB RAM: I love DataFusion

我利用 Apache DataFusion 在仅 10GB 内存的笔记本电脑上,成功跑通了包含 20 亿条边的图算法。通过设计基于批量扫描而非随机访问的 Map-Reduce 策略,并将计算压力卸载到磁盘,我实现了 PageRank 和弱连通分量(WCC)的高效计算。传统工具如 NetworkX 或 Igraph 无法处理此类规模,而过去我认为必须依赖 Apache Spark 和 GraphFrames 的十亿级图分析,现在只需一台普通笔记本即可搞定。尽管在极端场景下偶发 FairSpillPool 死锁,但整体方案验证了 DataFusion 在资源受限环境下处理海量图数据的惊人潜力。
以前我认为十亿级图分析必须依赖 Apache Spark 和 GraphFrames,但现在我发现,你只需要一台笔记本电脑就够了。
HN 评论区
39- chrisweekly
“我可以用 5GB 内存计算包含十亿条边的有向图(来自 Graphalytics 数据集的 graph500-26)的 PageRank。或者,我可以用 10GB 内存识别包含二十亿条边的图(来自同一数据集的 twitter_mpi)中的所有弱连通分量。NetworkX 和 Igraph 都做不到这一点;大多数现有的图算法都要求图能完全放入内存。以前,我认为要进行十亿规模的图分析,你需要 Apache Spark 和 GraphFrames。但现在,我认为你只需要一台笔记本电脑。我完全改变了我对使用 Apache DataFusion 进行图分析的旧看法。"
太 impressive 了!
- nylonstrung
DataFusion 无疑是有史以来最好的开源项目之一,它极其强大且设计精良。
它的可扩展性简直疯狂,你可以创建自己的查询语言并将其编译为逻辑计划。
- cpdomina
酷!你可能对 graphchi (2012) 感兴趣,它也是设计用于在单台机器上执行大规模图操作的。
- adsharma
在 Apache Arrow 上大规模运行图算法的想法起源于此。100 多种图算法在列式内存上运行。
https://github.com/Ladybug-Memory/icebug
在 graphframes-rs 中,基于 DataFusion 的 Out-of-core(外存)处理是主要的创新点。但目前它只有 2 种算法。
Icebug 和 LadybugDB 可以紧密集成,以高效地将编码为压缩稀疏行 (CSR) 的表移入 Arrow 内存。
提供 Jupyter notebooks。
- yadgire7
你好,我是 Hacker News 的新人,发现这里真的很有用。我觉得这篇文章很有趣(我在硕士课程中学过知识图谱 KG 和 Map Reduce (Spark)),感谢发帖者的努力。
我来这里是想寻求社区的建议。我想刷新一下关于知识图谱以及大数据挖掘与处理算法的记忆。
我相信 KG 可以实时解决 Agent 攻击(LLM agency)的问题——所以我想围绕这个主题构建知识。
如果有任何兴趣小组或讨论组,我很想加入。
谢谢!