Apache Spark
By the Apache Software Foundation
Apache Spark is a unified, open-source analytics engine for large-scale distributed data processing, offering in-memory computation and built-in modules for SQL, streaming, machine learning, and graph processing.
Definition
Apache Spark is a unified, open-source analytics engine for large-scale distributed data processing, offering in-memory computation and built-in modules for SQL, streaming, machine learning, and graph processing.
Overview
Spark originated at UC Berkeley's AMPLab in 2009 as a research project aimed at speeding up iterative workloads that struggled under Hadoop's MapReduce model, which writes intermediate results to disk between steps. Spark was open-sourced in 2010 and donated to the Apache Software Foundation in 2013. Spark's core abstraction — originally Resilient Distributed Datasets (RDDs), now more commonly accessed through higher-level DataFrame and Dataset APIs — keeps data in memory across operations, which can make iterative algorithms and interactive queries dramatically faster than disk-based MapReduce. On top of this core, Spark SQL handles structured queries, Structured Streaming handles real-time data (often ingested from Apache Kafka), MLlib provides distributed machine learning algorithms, and GraphX supports graph processing. Spark can run on Kubernetes, YARN, or its own standalone cluster manager, and exposes APIs in Scala, Java, Python (PySpark), and R. Databricks, founded by Spark's original creators, offers a widely used managed platform built around it. Spark is a foundational tool in modern data engineering and data science stacks; learners can build hands-on skills with the dedicated Apache Spark course.
Key Features
- In-memory distributed computing for fast iterative processing
- DataFrame and Dataset APIs alongside the original RDD model
- Spark SQL for structured, query-based data access
- Structured Streaming for real-time data processing
- MLlib for distributed machine learning
- GraphX for graph and network analysis
- Multi-language support: Scala, Java, Python, and R
- Pluggable cluster managers including Kubernetes and YARN