6
6
[ ![ documentation] ( https://img.shields.io/docsrs/pregel-rs/latest )] ( https://docs.rs/pregel-rs/latest/pregel_rs/ )
7
7
8
8
` pregel-rs ` is a Graph processing library written in Rust that features
9
- a Pregel-based Framework for implementing your own algorithms in a
10
- message-passing fashion. It is designed to be efficient and scalable,
9
+ a Pregel-based Framework for implementing your own algorithms in a
10
+ message-passing fashion. It is designed to be efficient and scalable,
11
11
making it suitable for processing large-scale graphs.
12
12
13
13
## Features
14
14
15
15
- _ Pregel-based framework_ : ` pregel-rs ` is a powerful graph processing model
16
- that allows users to implement graph algorithms in a message-passing fashion,
17
- where computation is performed on vertices and messages are passed along edges.
18
- ` pregel-rs ` provides a framework that makes it easy to implement graph
19
- algorithms using this model.
16
+ that allows users to implement graph algorithms in a message-passing fashion,
17
+ where computation is performed on vertices and messages are passed along edges.
18
+ ` pregel-rs ` provides a framework that makes it easy to implement graph
19
+ algorithms using this model.
20
20
21
- - _ Rust-based implementation_ : ` pregel-rs ` is implemented in Rust, a systems
22
- programming language known for its safety, concurrency, and performance.
23
- Rust's strong type system and memory safety features help ensure that ` pregel-rs `
24
- is robust and reliable.
21
+ - _ Rust-based implementation_ : ` pregel-rs ` is implemented in Rust, a systems
22
+ programming language known for its safety, concurrency, and performance.
23
+ Rust's strong type system and memory safety features help ensure that ` pregel-rs `
24
+ is robust and reliable.
25
25
26
26
- _ Efficient and scalable_ : ` pregel-rs ` designed to be efficient and scalable,
27
- making it suitable for processing large-scale graphs. It uses parallelism and
28
- optimization techniques to minimize computation and communication overhead,
29
- allowing it to handle graphs with millions or even billions of vertices and edges.
30
- For us to achieve this, we have built it on top of [ polars] ( https://github.com/pola-rs/polars )
31
- a blazingly fast DataFrames library implemented in Rust using Apache Arrow
32
- Columnar Format as the memory model.
33
-
34
- - _ Graph abstraction_ : ` pregel-rs ` provides a graph abstraction that makes
35
- it easy to represent and manipulate graphs in Rust. It supports both directed and
36
- undirected graphs, and provides methods for adding, removing, and querying vertices
37
- and edges.
27
+ making it suitable for processing large-scale graphs. It uses parallelism and
28
+ optimization techniques to minimize computation and communication overhead,
29
+ allowing it to handle graphs with millions or even billions of vertices and edges.
30
+ For us to achieve this, we have built it on top of [ polars] ( https://github.com/pola-rs/polars )
31
+ a blazingly fast DataFrames library implemented in Rust using Apache Arrow
32
+ Columnar Format as the memory model.
33
+
34
+ - _ Graph abstraction_ : ` pregel-rs ` provides a graph abstraction that makes
35
+ it easy to represent and manipulate graphs in Rust. It supports both directed and
36
+ undirected graphs, and provides methods for adding, removing, and querying vertices
37
+ and edges.
38
38
39
39
- _ Customizable computation_ : ` pregel-rs ` allows users to implement their own
40
- computation logic by defining vertex computation functions. This gives users the
41
- flexibility to implement their own graph algorithms and customize the behavior
42
- of ` pregel-rs ` to suit their specific needs.
40
+ computation logic by defining vertex computation functions. This gives users the
41
+ flexibility to implement their own graph algorithms and customize the behavior
42
+ of ` pregel-rs ` to suit their specific needs.
43
43
44
44
## Getting started
45
45
46
46
To get started with ` pregel-rs ` , you can follow these steps:
47
47
48
48
1 . _ Install Rust_ : ` pregel-rs ` requires Rust to be installed on your system.
49
- You can install Rust by following the instructions on the official Rust website:
50
- https://www.rust-lang.org/tools/install
49
+ You can install Rust by following the instructions on the official Rust website:
50
+ https://www.rust-lang.org/tools/install
51
51
52
52
2 . _ Create a new Rust project_ : Once Rust is installed, you can create a new Rust
53
- project using the Cargo package manager, which is included with Rust. You can
54
- create a new project by running the following command in your terminal:
53
+ project using the Cargo package manager, which is included with Rust. You can
54
+ create a new project by running the following command in your terminal:
55
55
56
56
``` sh
57
57
cargo new my_pregel_project
58
58
```
59
59
60
- 3 . _ Add ` pregel-rs ` as a dependency_ : Next, you need to add ` pregel-rs ` as a
61
- dependency in your ` Cargo.toml ` file, which is located in the root directory
62
- of your project. You can add the following line to your ` Cargo.toml ` file:
60
+ 3 . _ Add ` pregel-rs ` as a dependency_ : Next, you need to add ` pregel-rs ` as a
61
+ dependency in your ` Cargo.toml ` file, which is located in the root directory
62
+ of your project. You can add the following line to your ` Cargo.toml ` file:
63
63
64
64
``` toml
65
65
[dependencies ]
66
- pregel-rs = " 0.0.11 "
66
+ pregel-rs = " 0.0.12 "
67
67
```
68
68
69
69
4 . _ Implement your graph algorithm_ : Now you can start implementing your graph
70
- algorithm using the ` pregel-rs ` framework. You can define your vertex computation
71
- functions and use the graph abstraction provided by ` pregel-rs ` to manipulate the graph.
70
+ algorithm using the ` pregel-rs ` framework. You can define your vertex computation
71
+ functions and use the graph abstraction provided by ` pregel-rs ` to manipulate the graph.
72
72
73
73
5 . _ Build and run your project_ : Once you have implemented your graph algorithm, you
74
- can build and run your project using the Cargo package manager. You can build your
75
- project by running the following command in your terminal:
74
+ can build and run your project using the Cargo package manager. You can build your
75
+ project by running the following command in your terminal:
76
76
77
77
``` sh
78
78
cargo build
@@ -87,14 +87,14 @@ cargo run
87
87
## Acknowledgments
88
88
89
89
Read [ Pregel: A System for Large-Scale Graph Processing] ( https://15799.courses.cs.cmu.edu/fall2013/static/papers/p135-malewicz.pdf )
90
- for a reference on how to implement your own Graph processing algorithms in a Pregel fashion. If you want to take some
90
+ for a reference on how to implement your own Graph processing algorithms in a Pregel fashion. If you want to take some
91
91
inspiration from some curated-sources, just explore the [ /examples] ( https://github.com/angelip2303/graph-rs/tree/main/examples )
92
92
folder of this repository.
93
93
94
94
## Related projects
95
95
96
- 1 . [ GraphX] ( https://github.com/apache/spark/tree/master/graphx ) is a library enabling Graph processing in the context of
97
- Apache Spark.
96
+ 1 . [ GraphX] ( https://github.com/apache/spark/tree/master/graphx ) is a library enabling Graph processing in the context of
97
+ Apache Spark.
98
98
2 . [ GraphFrames] ( https://github.com/graphframes/graphframes ) is the DataFrame-based equivalent to GraphX.
99
99
100
100
## License
@@ -108,11 +108,11 @@ the Free Software Foundation, either version 3 of the License, or
108
108
109
109
This program is distributed in the hope that it will be useful,
110
110
but WITHOUT ANY WARRANTY; without even the implied warranty of
111
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
111
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
112
112
GNU General Public License for more details.
113
113
114
114
You should have received a copy of the GNU General Public License
115
- along with this program. If not, see < https://www.gnu.org/licenses/ > .
115
+ along with this program. If not, see < https://www.gnu.org/licenses/ > .
116
116
117
117
** By contributing to this project, you agree to release your
118
118
contributions under the same license.**
0 commit comments