{"id":13494756,"url":"https://github.com/twitter/cassovary","last_synced_at":"2025-05-16T01:06:07.131Z","repository":{"id":2532594,"uuid":"3509388","full_name":"twitter/cassovary","owner":"twitter","description":"Cassovary is a simple big graph processing library for the JVM","archived":false,"fork":false,"pushed_at":"2021-10-08T21:22:29.000Z","size":52777,"stargazers_count":1048,"open_issues_count":33,"forks_count":149,"subscribers_count":159,"default_branch":"master","last_synced_at":"2025-04-08T11:16:17.864Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://twitter.com/cassovary","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twitter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-02-21T23:22:30.000Z","updated_at":"2025-02-17T09:08:48.000Z","dependencies_parsed_at":"2022-08-30T18:51:13.486Z","dependency_job_id":null,"html_url":"https://github.com/twitter/cassovary","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Fcassovary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Fcassovary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Fcassovary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Fcassovary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twitter","download_url":"https://codeload.github.com/twitter/cassovary/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254448579,"owners_count":22072764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T19:01:27.815Z","updated_at":"2025-05-16T01:06:02.096Z","avatar_url":"https://github.com/twitter.png","language":"Scala","funding_links":[],"categories":["Scala","Extensions"],"sub_categories":[],"readme":"# Cassovary\n\n[![Maven Central](https://img.shields.io/maven-central/v/com.twitter/cassovary-core_2.11.svg)](https://maven-badges.herokuapp.com/maven-central/com.twitter/cassovary-core_2.11)\n[![Build Status](https://img.shields.io/travis/twitter/cassovary.svg)](https://travis-ci.org/twitter/cassovary)\n\nCassovary is a simple \"big graph\" processing library for the JVM.\nMost JVM-hosted graph libraries are flexible but not\nspace efficient. Cassovary is designed from the ground up to first be\nable to efficiently handle graphs with billions of nodes\nand edges. A typical example usage is to do large scale\ngraph mining and analysis of a \u003ca href=\"https://twitter.com\"\u003ebig network\u003c/a\u003e.\nCassovary is written in Scala and can be used with any JVM-hosted language.\nIt comes with some common data structures and algorithms.\n\nPlease follow the cassovary project on twitter at [@cassovary](https://twitter.com/cassovary)\nfor updates.\n\n## Quick Start and Examples\n\nAfter cloning the repository, type ```./sbt``` which will download the sbt launch jar and launch\nthe sbt console. Then type the following in the console:\n\n1. ```project cassovary-examples```\n2. ```runMain HelloLoadGraph```\n\nThere is a subproject included  called cassovary-examples containing simple java and scala\nexamples of using the library. See\n[this README](https://github.com/twitter/cassovary/blob/master/cassovary-examples/ExamplesREADME.md)\nto get started with these examples.\n\nSome other subprojects to check are cassovary-benchmarks for helping benchmark\nsome graph algorithms and cassovary-server that exposes Cassovary on a web server.\n\n## Building\n\nCassovary is built using [sbt](https://github.com/sbt/sbt) and was tested last using sbt version 0.13.9\n\n1. ```./sbt update``` (might take a couple of minutes)\n2. ```./sbt test```\n3. ```./sbt package```\n\n## Alternative for using for local projects\n1. ```./sbt publishLocal```\n2. ```cd ../\u003cdependent project\u003e```\n3. ```./sbt update```\n\n## Using maven published version of library\n\nCassovary is published to maven central with scala version 2.11.8 starting Cassovary version 7.0.0.\nThe latest published Cassovary version number that also works with scala 2.10 is version 6.4.0.\nPlease see the latest version number (such as 7.1.0) released alongside\nthe maven-central image at the top of this README.\n\nTo use with sbt, substitute the latest version number and use:\n\n```libraryDependencies += \"com.twitter\" %% \"cassovary-core\" % \"7.1.0\"```\n\nand\n\n```resolvers += \"twitter\" at \"http://maven.twttr.com\"```\n\nThe last Cassovary version to support scala 2.9 is 3.4.0, and\nsupport for scala version 2.9.x has been discontinued since.\nThe last Cassovary version to support scala 2.10 is 6.4.0, and\nsupport for scala version 2.10.x has been discontinued since.\nAlso, Cassovary requires Java 7+ and the last Cassovary version to support Java 6 was 3.4.0.\n\nThe only dependency that Cassovary uses which is not bundled with it (because of its size)\nis ```it.unimi.dsi.fastutil```. You can add that dependency in your sbt project as follows:\n\n```libraryDependencies += \"it.unimi.dsi\" % \"fastutil\" % \"7.0.7\"```\n\n## Comparison to Other Graph Libraries\nThere are many excellent graph mining libraries already in existence. Most of\nthem have one or more of the following characteristics:\n\n1. Written in C/C++. Examples include [SNAP](http://snap.stanford.edu/) from Stanford and\n[GraphLab](http://graphlab.org/) from CMU. The typical way to use these from JVM is to use\nJNI bridges.\n2. Sacrifice storage efficiency for flexibility. Examples include\n[JUNG](http://jung.sourceforge.net/) which is written in Java but\nstores nodes and edges as big objects.\n3. Are meant to do much more, typically a full graph database. Examples include\n[Neo4J](http://neo4j.org).\n\nOn the other hand, Cassovary is intended to be easy to use in a JVM-hosted\nenvironment and yet be efficient enough to scale to billions of edges.\nIt is deliberately not designed to provide any persistence or database functionality.\nAlso, it currently skips any concerns of partitioning the graph and hence is\nnot directly comparable to distributed graph processing systems like\n[Apache Giraph](http://incubator.apache.org/giraph/). This allows complex algorithms\nto be run on the graph efficiently, an otherwise recurring issue with distributed\ngraph processing systems because of the known difficulty of achieving good\ngraph partitions. On the flip side, the size of the\ngraph it works with is bounded by the memory available in a machine, though\nthe use of space efficient data structures does not seem to make this a\nlimitation for most practical graphs. For example, a ```SharedArrayBasedDirectedGraph```\ninstance of a unidirectional graph with 10M nodes and 1B edges consumes\nless than 6GB of memory, and scales linearly beyond that. Some other data points for memory\nusage can be checked out using the script ```bash cassovary-examples/src/main/bash/load-graph-examples.sh```.\nAs the script shows, a randomly generated unidirectional directed graph with 0.5M nodes and 10M edges can be built\nwith 60MB of memory, and one with 5M nodes and 100M edges can be built with 500MB of memory. Loading both\ndirections of those graphs takes respectively 120MB and 1.1GB of memory.\n\n\n## Mailing list\nhttp://groups.google.com/group/twitter-cassovary\n\nPlease follow the cassovary project on twitter at [@cassovary](https://twitter.com/cassovary)\nfor updates.\n\n## Bugs\nPlease report any bugs to: \u003chttps://github.com/twitter/cassovary/issues\u003e\n\n## Acknowledgments\nThanks to all the [contributors](https://github.com/twitter/cassovary/graphs/contributors) of Cassovary.\n\nWe use the [Yourkit](http://yourkit.com) Java Profiler for profiling and tuning Cassovary. [![Yourkit logo](http://projects.collide.info/attachments/download/1289/yklogo.png)](http://yourkit.com)\n\n## License\nCopyright 2016 Twitter, Inc.\n\nLicensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwitter%2Fcassovary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwitter%2Fcassovary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwitter%2Fcassovary/lists"}