Up to 100x faster (for iterative algorithms) than Hadoop MapReduce ! Can read from any Hadoop input source (e.g. HDFS, S3, …) ! APIs in Scala, Java and Python (since 0.7.0)
can be used to reconstruct lost partitions ! Immutable, distributed collections of objects ! Fault-tolerant ! Created through parallel transformations (map, filter, groupBy, join, …) on data in stable storage ! Can be cached in memory for fast reuse
transform1 -> transform2 -> … -> action ! Transformations: lazy operations to build RDDs from other RDDs (map, filter, join, …) ! Actions: return a result on driver or write it to some storage (count, reduce, collect, save)
closure of Spark operation are copied to each machine with each task ! Broadcast variables allow you to cache a large read-only variable on each worker (to avoid network and I/O) ! Accumulators are variables that can be efficiently added to in parallel (e.g. counters)