GithubHelp home page GithubHelp logo

awesome-spark / awesome-spark Goto Github PK

View Code? Open in Web Editor NEW
1.7K 85.0 325.0 214 KB

A curated list of awesome Apache Spark packages and resources.

License: Creative Commons Zero v1.0 Universal

Shell 100.00%
apache-spark pyspark awesome sparkr

awesome-spark's Introduction

Awesome Spark Awesome

A curated list of awesome Apache Spark packages and resources.

Apache Spark is an open-source cluster-computing framework. Originally developed at the University of California, Berkeley's AMPLab, the Spark codebase was later donated to the Apache Software Foundation, which has maintained it since. Spark provides an interface for programming entire clusters with implicit data parallelism and fault-tolerance (Wikipedia 2017).

Users of Apache Spark may choose between different the Python, R, Scala and Java programming languages to interface with the Apache Spark APIs.

Contents

Packages

Language Bindings

Notebooks and IDEs

  • almond - A scala kernel for Jupyter.
  • Apache Zeppelin - Web-based notebook that enables interactive data analytics with plugable backends, integrated plotting, and extensive Spark support out-of-the-box.
  • Polynote - Polynote: an IDE-inspired polyglot notebook. It supports mixing multiple languages in one notebook, and sharing data between them seamlessly. It encourages reproducible notebooks with its immutable data model. Originating from Netflix.
  • Spark Notebook - Scalable and stable Scala and Spark focused notebook bridging the gap between JVM and Data Scientists (incl. extendable, typesafe and reactive charts).
  • sparkmagic - Jupyter magics and kernels for working with remote Spark clusters, for interactively working with remote Spark clusters through Livy, in Jupyter notebooks.

General Purpose Libraries

  • Succinct - Support for efficient queries on compressed data.
  • itachi - A library that brings useful functions from modern database management systems to Apache Spark.
  • spark-daria - A Scala library with essential Spark functions and extensions to make you more productive.
  • quinn - A native PySpark implementation of spark-daria.
  • Apache DataFu - A library of general purpose functions and UDF's.
  • Joblib Apache Spark Backend - joblib backend for running tasks on Spark clusters.

SQL Data Sources

SparkSQL has serveral built-in Data Sources for files. These include csv, json, parquet, orc, and avro. It also supports JDBC databases as well as Apache Hive. Additional data sources can be added by including the packages listed below, or writing your own.

Storage

  • Delta Lake - Storage layer with ACID transactions.
  • lakeFS - Integration with the lakeFS atomic versioned storage layer.

Bioinformatics

  • ADAM - Set of tools designed to analyse genomics data.
  • Hail - Genetic analysis framework.

GIS

  • Magellan - Geospatial analytics using Spark.
  • Apache Sedona - Cluster computing system for processing large-scale spatial data.

Time Series Analytics

  • Spark-Timeseries - Scala / Java / Python library for interacting with time series data on Apache Spark.
  • flint - A time series library for Apache Spark.

Graph Processing

  • Mazerunner - Graph analytics platform on top of Neo4j and GraphX.
  • GraphFrames - Data frame based graph API.
  • neo4j-spark-connector - Bolt protocol based, Neo4j Connector with RDD, DataFrame and GraphX / GraphFrames support.
  • SparklingGraph - Library extending GraphX features with multiple functionalities useful in graph analytics (measures, generators, link prediction etc.).

Machine Learning Extension

Middleware

  • Livy - REST server with extensive language support (Python, R, Scala), ability to maintain interactive sessions and object sharing.
  • spark-jobserver - Simple Spark as a Service which supports objects sharing using so called named objects. JVM only.
  • Mist - Service for exposing Spark analytical jobs and machine learning models as realtime, batch or reactive web services.
  • Apache Toree - IPython protocol based middleware for interactive applications.
  • Apache Kyuubi - A distributed multi-tenant JDBC server for large-scale data processing and analytics, built on top of Apache Spark.

Monitoring

Utilities

  • silex - Collection of tools varying from ML extensions to additional RDD methods.
  • sparkly - Helpers & syntactic sugar for PySpark.
  • pyspark-stubs - Static type annotations for PySpark (obsolete since Spark 3.1. See SPARK-32681).
  • Flintrock - A command-line tool for launching Spark clusters on EC2.
  • Optimus - Data Cleansing and Exploration utilities with the goal of simplifying data cleaning.

Natural Language Processing

Streaming

  • Apache Bahir - Collection of the streaming connectors excluded from Spark 2.0 (Akka, MQTT, Twitter. ZeroMQ).

Interfaces

  • Apache Beam - Unified data processing engine supporting both batch and streaming applications. Apache Spark is one of the supported execution environments.
  • Blaze - Interface for querying larger than memory datasets using Pandas-like syntax. It supports both Spark DataFrames and RDDs.
  • Koalas - Pandas DataFrame API on top of Apache Spark.

Testing

  • deequ - Deequ is a library built on top of Apache Spark for defining "unit tests for data", which measure data quality in large datasets.
  • spark-testing-base - Collection of base test classes.
  • spark-fast-tests - A lightweight and fast testing framework.

Web Archives

Workflow Management

Resources

Books

Papers

MOOCS

Workshops

Projects Using Spark

  • Oryx 2 - Lambda architecture platform built on Apache Spark and Apache Kafka with specialization for real-time large scale machine learning.
  • Photon ML - A machine learning library supporting classical Generalized Mixed Model and Generalized Additive Mixed Effect Model.
  • PredictionIO - Machine Learning server for developers and data scientists to build and deploy predictive applications in a fraction of the time.
  • Crossdata - Data integration platform with extended DataSource API and multi-user environment.

Docker Images

Miscellaneous

References

Wikipedia. 2017. “Apache Spark — Wikipedia, the Free Encyclopedia.” https://en.wikipedia.org/w/index.php?title=Apache_Spark&oldid=781182753.

License

Public Domain Mark
This work (Awesome Spark, by https://github.com/awesome-spark/awesome-spark), identified by Maciej Szymkiewicz, is free of known copyright restrictions.

Apache Spark, Spark, Apache, and the Spark logo are trademarks of The Apache Software Foundation. This compilation is not endorsed by The Apache Software Foundation.

Inspired by sindresorhus/awesome.

awesome-spark's People

Contributors

arielshaqed avatar bartosz25 avatar beckgael avatar cbaenziger avatar cycorey avatar eliasah avatar eyala avatar jimmyho avatar jolanrensen avatar jystephan avatar kenahoo avatar manojmallela avatar maziyarpanahi avatar mbonaci avatar mhamilton723 avatar mrpowers avatar mrsrinivas avatar nchammas avatar oluies avatar onecricketeer avatar ramakrishnachilaka avatar riomus avatar ruebot avatar spushkarev avatar tambonbon avatar thoheinze avatar veelenga avatar yaooqinn avatar yikf avatar zero323 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

awesome-spark's Issues

Consider spark-tensorflow-connector

This repo contains a library for loading and storing TensorFlow records with Apache Spark. The library implements data import from the standard TensorFlow record format ([TFRecords] (https://www.tensorflow.org/how_tos/reading_data/)) into Spark SQL DataFrames, and data export from DataFrames to TensorFlow records.

https://github.com/tensorflow/ecosystem/tree/master/spark/spark-tensorflow-connector#spark-tensorflow-connector

This project is part of Tensorflow ecosystem which contains examples for integrating TensorFlow with other open-source frameworks e.g kubernetes, docker, marathon, spark, etc.

What do you think @zero323 @oluies ?

Consider combust/mleap

MLeap is a common serialization format and execution engine for machine learning pipelines. It supports Spark, Scikit-learn and Tensorflow for training pipelines and exporting them to an MLeap Bundle. Serialized pipelines (bundles) can be deserialized back into Spark, Scikit-learn, TensorFlow graphs, or an MLeap pipeline for use in a scoring engine (API Servers).

Consider dist-keras

https://github.com/cerndb/dist-keras

Distributed Keras is a distributed deep learning framework built op top of Apache Spark and Keras, with a focus on "state-of-the-art" distributed optimization algorithms. We designed the framework in such a way that a new distributed optimizer could be implemented with ease, thus enabling a person to focus on research. Several distributed methods are supported, such as, but not restricted to, the training of ensembles and models using data parallel methods.

Adding spark-in-a-box

I was thinking about adding spark-in-a-box into docker images, what do you think ?

Use consitent line ending strategy

Right now there are two different approaches:

  • finishing with full-stop
  • no-punctuation mark at all

The first approach seems to be much better IMHO.

Version and language labeling

Should we provide an optional version or language specific labels? The former one can become a serious issue with upcoming 2.0+. The latter one is probably less useful and not worth the effort.

sparkapi and sparklyr

  • should we include these two or wait and see how things go?
  • if we include where should these go? Should we add these separately?

@eliasah

Consider Spark with Java

Hi,

Here is a small intro to Spark with Java:

  • Spark with Java - New book in Manning's Early Access Program (MEAP) with a very strong focus on Java, targeted towards software and data engineers. The author focuses on existing developing existing skills rather than learning Spark, Scala, and Hadoop at the same time. You can find the accompanying GitHub repos here.

Thanks for considering it,
HIH,

jg

Tutorials

Should we add some tutorials links ? What do you think ?

Databricks Spark Knowledge Base

Is there any point in adding it here? It hasn't been updated in two years and ignoring iconic Avoid GroupByKey where the title seems to be to only thing than readers remember it is rather shallow.

Clean MOOCS section

CS100 and CS190 are no longer offered. The new curriculum contains five different courses. We also need proper descriptions.

Fix header usage

  • use h2 for top level categories (like packages)
  • use h3 for subcategories (like Language bindings)

Docker images

I've been thinking about adding a list of useful Spark Docker images. This it not very long but I think it can be useful. It could go the resources section.

Resources

...

Blogs

....

Docker images:

Consider Sparkle

https://github.com/tweag/sparkle

sparkle: Apache Spark applications in Haskell

sparkle [spär′kəl]: a library for writing resilient analytics applications in Haskell that scale to thousands of nodes, using Spark and the rest of the Apache ecosystem under the hood. See this blog post for the details.

Moved from #97

CC @alpmestan

Consider EclairJS / EclairJS-Node

https://github.com/EclairJS/eclairjs

Considering that the official statement is:

There has been a team here in IBM working on EclairJS for about a year now. Unfortunately from the team's perspective, the project has not gained traction and so they are going to discontinue work on it. The eclairjs.org domain name will continue to exist for a while longer although there will a few other changes such as shuttering this (largely unused) Slack channel

I doubt it make sense to follow this route, but I could be biased.

Moved from #97

Clean AMP Camp entry

We should either provide a short description of the AMP Camp in general or provide some links to individual events, each with its own description.

Inconsistent captialization of the descriptions.

Right now have three different conventions:

  • [link] - lowercase foo bar.
  • [link] - Uppercase foo bar.
  • [link] - Uppercase Foo Bar.

We should choose one (the second approach is probably canonical given we use full sentences for descriptions) and adjust the rest.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.