{"id":13547429,"url":"https://github.com/twitter/algebird","last_synced_at":"2025-05-14T09:11:54.934Z","repository":{"id":37933786,"uuid":"5275507","full_name":"twitter/algebird","owner":"twitter","description":"Abstract Algebra for Scala","archived":false,"fork":false,"pushed_at":"2024-08-19T21:31:41.000Z","size":9566,"stargazers_count":2296,"open_issues_count":111,"forks_count":347,"subscribers_count":230,"default_branch":"develop","last_synced_at":"2025-04-21T10:03:43.908Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://twitter.github.io/algebird","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":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-08-02T17:24:42.000Z","updated_at":"2025-04-19T00:44:34.000Z","dependencies_parsed_at":"2023-11-12T12:22:13.384Z","dependency_job_id":"e5dcf9fd-c44e-4f4d-b490-d31951457e82","html_url":"https://github.com/twitter/algebird","commit_stats":{"total_commits":1501,"total_committers":120,"mean_commits":"12.508333333333333","dds":0.8407728181212525,"last_synced_commit":"464917d6a3f2b1c9f2048e3dd38df5dd97edc965"},"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Falgebird","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Falgebird/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Falgebird/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twitter%2Falgebird/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twitter","download_url":"https://codeload.github.com/twitter/algebird/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254110374,"owners_count":22016391,"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-08-01T12:00:55.465Z","updated_at":"2025-05-14T09:11:54.904Z","avatar_url":"https://github.com/twitter.png","language":"Scala","readme":"## Algebird\n\n[![Build status](https://img.shields.io/travis/twitter/algebird/develop.svg)](http://travis-ci.org/twitter/algebird)\n[![Codecov branch](https://img.shields.io/codecov/c/github/twitter/algebird/develop.svg?maxAge=3600)](https://codecov.io/github/twitter/algebird)\n[![Latest version](https://index.scala-lang.org/twitter/algebird/algebird-core/latest.svg?color=orange)](https://index.scala-lang.org/twitter/algebird/algebird-core)\n[![Chat](https://badges.gitter.im/twitter/algebird.svg)](https://gitter.im/twitter/algebird?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\n### Overview\n\nAbstract algebra for Scala. This code is targeted at building aggregation systems (via [Scalding](https://github.com/twitter/scalding) or [Apache Storm](http://storm.apache.org/)). It was originally developed as part of Scalding's Matrix API, where Matrices had values which are elements of Monoids, Groups, or Rings. Subsequently, it was clear that the code had broader application within Scalding and on other projects within Twitter.\n\nSee the [Algebird website](https://twitter.github.io/algebird) for more information.\n\n### What can you do with this code?\n\n```scala\n\u003e sbt algebird-core/console\n\nWelcome to Scala 2.12.14 (OpenJDK 64-Bit Server VM, Java 11.0.1).\nType in expressions for evaluation. Or try :help.\n\nscala\u003e import com.twitter.algebird._\nimport com.twitter.algebird._\n\nscala\u003e import com.twitter.algebird.Operators._\nimport com.twitter.algebird.Operators._\n\nscala\u003e Map(1 -\u003e Max(2)) + Map(1 -\u003e Max(3)) + Map(2 -\u003e Max(4))\nres0: scala.collection.immutable.Map[Int,com.twitter.algebird.Max[Int]] = Map(2 -\u003e Max(4), 1 -\u003e Max(3))\n```\n\nIn the above, the class `Max[T]` signifies that the `+` operator should actually be `max` (this is accomplished by providing an implicit instance of a typeclass for `Max` that handles `+`).\n\n- Model a wide class of \"reductions\" as a sum on some iterator of a particular value type. For example, average, moving average, max/min, set union, approximate set size (in much less memory with HyperLogLog), approximate item counting (using CountMinSketch).\n- All of these combine naturally in tuples, vectors, maps, options and more standard scala classes.\n- Implementations of Monoids for interesting approximation algorithms, such as Bloom filter, HyperLogLog and CountMinSketch. These allow you to think of these sophisticated operations like you might numbers, and add them up in hadoop or online to produce powerful statistics and analytics.\n\n## Documentation\n\nTo learn more and find links to tutorials and information around the web, check out the [Algebird website](https://twitter.github.io/algebird).\n\nThe latest API docs are hosted on Algebird's [ScalaDoc index](https://twitter.github.io/algebird/api/).\n\n## Get Involved + Code of Conduct\n\nPull requests and bug reports are always welcome! Check out our [Contributing guide](https://twitter.github.io/algebird/contributing.html) for information on what we most need help with and how you can get started contributing.\n\nDiscussion occurs primarily on the Algebird Gitter channel: [![Chat](https://badges.gitter.im/twitter/algebird.svg)](https://gitter.im/twitter/algebird?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nWe also monitor the [Algebird mailing list](https://groups.google.com/forum/#!forum/algebird).\n\nIssues should be reported on the [GitHub issue tracker](https://github.com/twitter/algebird/issues).\n\nWe use a lightweight form of project governance inspired by the one used by Apache projects.\n\nPlease see [Contributing and Committership](https://github.com/twitter/analytics-infra-governance#contributing-and-committership) for our code of conduct and our pull request review process.\n\nThe TL;DR is send us a pull request, iterate on the feedback + discussion, and get a +1 from a [Committer](COMMITTERS.md) in order to get your PR accepted.\n\nThe current list of active committers (who can +1 a pull request) can be found here: [Committers](COMMITTERS.md)\n\nA list of contributors to the project can be found here: [Contributors](https://github.com/twitter/algebird/graphs/contributors)\n\n## Maven\n\nAlgebird modules are available on maven central. The current groupid and version for all modules is, respectively, `\"com.twitter\"` and  `0.13.5`.\n\nSee [Algebird's page on the Scaladex](https://index.scala-lang.org/twitter/algebird) for information on all published artifacts and their associated Scala versions. Algebird currently supports Scala 2.10, 2.11 and 2.12.\n\n## Projects using Algebird\n\n- [Scalding](http://github.com/twitter/scalding)\n- [Spark](https://github.com/mesos/spark/pull/480)\n- [Simmer](https://github.com/avibryant/simmer)\n- [Summingbird](https://github.com/twitter/summingbird)\n- [Scio](https://github.com/spotify/scio)\n- [Packetloop](https://www.packetloop.com) (see [this tweet](https://twitter.com/cloudjunky/status/355073917720858626))\n- Ebay uses Algebird for machine learning: [ScalaDays talk](http://www.slideshare.net/VitalyGordon/scalable-and-flexible-machine-learning-with-scala-linkedin)\n- [Apple (FEAR Team)](https://news.ycombinator.com/item?id=16969118)\n\nOther projects built with Algebird, as compiled by the Scaladex: [![Scaladex Dependents](https://index.scala-lang.org/count.svg?q=dependencies:twitter/algebird*\u0026subject=scaladex:\u0026color=blue\u0026style=flat-square)](https://index.scala-lang.org/search?q=dependencies:twitter/algebird-core)\n\n## Authors\n\n* Oscar Boykin \u003chttp://twitter.com/posco\u003e\n* Avi Bryant \u003chttp://twitter.com/avibryant\u003e\n* Edwin Chen \u003chttp://twitter.com/echen\u003e\n* ellchow \u003chttp://github.com/ellchow\u003e\n* Mike Gagnon \u003chttps://twitter.com/gmike\u003e\n* Moses Nakamura \u003chttps://twitter.com/mnnakamura\u003e\n* Steven Noble \u003chttp://twitter.com/snoble\u003e\n* Sam Ritchie \u003chttp://twitter.com/sritchie\u003e\n* Ashutosh Singhal \u003chttp://twitter.com/daashu\u003e\n* Argyris Zymnis \u003chttp://twitter.com/argyris\u003e\n\n## License\n\nCopyright 2016 Twitter, Inc.\n\nLicensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).\n\n### Thanks to Yourkit\nYourKit supports open source projects with innovative and intelligent tools\nfor monitoring and profiling Java and .NET applications.\nYourKit is the creator of \u003ca href=\"https://www.yourkit.com/java/profiler/\"\u003eYourKit Java Profiler\u003c/a\u003e,\n\u003ca href=\"https://www.yourkit.com/.net/profiler/\"\u003eYourKit .NET Profiler\u003c/a\u003e,\nand \u003ca href=\"https://www.yourkit.com/youmonitor/\"\u003eYourKit YouMonitor\u003c/a\u003e.\n","funding_links":[],"categories":["Scala","Table of Contents","Science and Data Analysis","[](https://github.com/josephmisiti/awesome-machine-learning/blob/master/README.md#scala)Scala"],"sub_categories":["General-Purpose Machine Learning","Science and Data Analysis"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwitter%2Falgebird","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwitter%2Falgebird","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwitter%2Falgebird/lists"}