Lightning-fast cluster computing

Apache Spark is a fast and general engine for large-scale data processing.

Speed

Run programs up to 100x faster than Hadoop MapReduce in memory, or 10x faster on disk.

Spark has an advanced DAG execution engine that supports cyclic data flow and in-memory computing.

Logistic regression in Hadoop and Spark

Ease of Use

Write applications quickly in Java, Scala or Python.

Spark offers over 80 high-level operators that make it easy to build parallel apps. And you can use it interactively from the Scala and Python shells.

file = spark.textFile("hdfs://...")
 
file.flatMap(line => line.split(" "))
    .map(word => (word, 1))
    .reduceByKey(_ + _)
Word count in Spark

Generality

Combine SQL, streaming, and complex analytics.

Spark powers a stack of high-level tools including Shark for SQL, MLlib for machine learning, GraphX, and Spark Streaming. You can combine these frameworks seamlessly in the same application.

Shark (SQL) Spark Streaming MLlib (machine learning) GraphX

Integrated with Hadoop

Spark can run on Hadoop 2's YARN cluster manager, and can read any existing Hadoop data.

If you have a Hadoop 2 cluster, you can run Spark without any installation needed. Otherwise, Spark is easy to run standalone or on EC2 or Mesos. It can read from HDFS, HBase, Cassandra, and any Hadoop data source.

Community

Spark is used at a wide range of organizations to process large datasets. You can find example use cases at the Spark Summit conference, or on the Powered By page.

There are many ways to reach the community:

Contributors

Apache Spark is built by a wide set of developers from over 25 companies. Since the project started in 2010, more than 120 developers have contributed to Spark!

The project's committers come from 12 organizations.

If you'd like to participate in Spark, or contribute to the libraries on top of it, learn how to contribute.

Getting Started

Learning Spark is easy whether you come from a Java or Python background:

Apache Incubator Notice

Apache Spark is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.