#graph-algorithms #graph #algorithm #polars #pagerank #dataframe #pregel

pregel-rs

用Rust编写的一个图库,用于以Pregel风格实现自己的算法

13次发布

0.0.13 2023年6月27日
0.0.12 2023年6月11日
0.0.9 2023年5月27日
0.0.5 2023年4月15日

#1054 in 算法

Download history 26/week @ 2024-03-11 9/week @ 2024-04-01

237 每月下载
用于 pschema-rs

GPL-3.0-or-later

73KB
672

pregel-rs

CI codecov latest_version documentation

pregel-rs 是一个用Rust编写的图处理库,它提供了一个基于Pregel的框架,用于以消息传递方式实现自己的算法。它设计得既高效又可扩展,适用于处理大规模图。

功能

  • Pregel框架pregel-rs 是一种强大的图处理模型,允许用户以消息传递方式实现图算法,其中计算是在顶点上进行的,而消息是通过边传递的。 pregel-rs 提供了一个框架,使用此模型实现图算法变得容易。

  • Rust实现pregel-rs 是用Rust编写的,Rust是一种以安全性、并发性和性能著称的系统编程语言。Rust的强大类型系统和内存安全性功能有助于确保 pregel-rs 稳健可靠。

  • 高效且可扩展pregel-rs 设计得既高效又可扩展,适用于处理大规模图。它使用并行化和优化技术来最小化计算和通信开销,可以处理包含数百万甚至数十亿个顶点和边的图。为了实现这一点,我们基于 polars 构建,这是一个使用Apache Arrow列格式作为内存模型的Rust实现的快速DataFrame库。

  • 图抽象pregel-rs 提供了一个图抽象,使在Rust中表示和操作图变得容易。它支持有向和无向图,并提供添加、删除和查询顶点和边的方法。

  • 自定义计算pregel-rs 允许用户通过定义顶点计算函数来实现自己的计算逻辑。这使用户能够实现自己的图算法,并根据特定需求自定义 pregel-rs 的行为。

入门指南

要开始使用 pregel-rs,您可以按照以下步骤操作

  1. 安装 Rustpregel-rs 需要在您的系统上安装 Rust。您可以通过访问官方 Rust 网站(https://rust-lang.net.cn/tools/install)上的说明来安装 Rust。

  2. 创建一个新的 Rust 项目:一旦安装了 Rust,您可以使用 Rust 自带的 Cargo 包管理器创建一个新的 Rust 项目。您可以在终端中运行以下命令来创建一个新项目

cargo new my_pregel_project
  1. Cargo.toml 文件中添加 pregel-rs 作为依赖项:接下来,您需要在项目的根目录下的 Cargo.toml 文件中添加 pregel-rs 作为依赖项。您可以将以下行添加到您的 Cargo.toml 文件中
[dependencies]
pregel-rs = "0.0.13"
  1. 实现您的图算法:现在您可以使用 pregel-rs 框架开始实现您的图算法。您可以定义您的顶点计算函数,并使用 pregel-rs 提供的图抽象来操作图。

  2. 构建和运行您的项目:一旦您实现了图算法,您可以使用 Cargo 包管理器构建和运行您的项目。您可以在终端中运行以下命令来构建您的项目

cargo build

您可以通过运行以下命令来运行您的项目

cargo run

致谢

阅读 Pregel: A System for Large-Scale Graph Processing 了解如何在 Pregel 风格中实现您自己的图处理算法的参考。如果您想从一些精选资源中获取灵感,请探索此存储库的 /examples 文件夹。

  1. GraphX 是一个库,它可以在 Apache Spark 的上下文中进行图处理。
  2. GraphFrames 是与 GraphX 相等的 DataFrame 基础库。

许可

版权所有 © 2023 Ángel Iglesias Préstamo ([email protected])

本程序是自由软件:您可以在自由软件基金会发布的 GNU 通用公共许可证的条款和条件下重新分发和/或修改它,无论是许可证的第 3 版,还是(按您的选择)任何较新版本。

本程序是根据希望它将是有用的前提下分发的,但不提供任何保证;甚至不保证适销性或特定用途适用性。有关详细信息,请参阅 GNU 通用公共许可证。

您应该已经收到一份 GNU 通用公共许可证副本。如果没有,请参阅 https://www.gnu.org/licenses/

通过向此项目贡献,您同意在相同的许可证下发布您的贡献。

依赖项

~33–46MB
~804K SLoC