0 to 100 with
Jowanza Joseph
@jowanza
Origins
Basic Design
- Inspired by the MapReduce paradigm
- Focused on in-memory processing
- Built primarily for batch jobs
- Streaming as a special case
- Written in Scala
Principles
- Memory Efficiency
- Parallelism
- Lazy Evaluation*
APIs
- Scala, Java, Python and R APIs
- Spark SQL
- Structured Streaming
- GraphX
import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.appName("Spark SQL basic example")
.config("spark.some.config.option", "some-value")
.getOrCreate()
import spark.implicits._
val df = spark.read.json("examples/src/main/resources/people.json")
// Displays the content of the DataFrame to stdout
df.show()
// +----+-------+
// | age| name|
// +----+-------+
// |null|Michael|
// | 30| Andy|
// | 19| Justin|
// +----+-------+
val spark: SparkSession = ...
// Read text from socket
val socketDF = spark
.readStream
.format("socket")
.option("host", "localhost")
.option("port", 9999)
.load()
socketDF.isStreaming // Returns True for DataFrames that have streaming sources
socketDF.printSchema
// Read all the csv files written atomically in a directory
val userSchema = new StructType().add("name", "string").add("age", "integer")
val csvDF = spark
.readStream
.option("sep", ";")
.schema(userSchema) // Specify schema of the csv files
.csv("/path/to/directory") // Equivalent to format("csv").load("/path/to/directory")
Jobs
Ecosystem
Stream Processing
Deployment Options
Extras
Demo
Resources
Thanks
0 to 100 withApache Spark
By Jowanza Joseph
0 to 100 withApache Spark
- 622