Spark and Spark Streaming can process streaming data using a technique called Discretized Streams (D-Streams) that divides the data into small batch intervals. This allows Spark to provide fault tolerance through checkpointing and recovery of state across intervals. Spark Streaming also introduces the concept of "exactly-once" processing semantics through checkpointing and write ahead logs. Spark Structured Streaming builds on these concepts and adds SQL support and watermarking to allow incremental processing of streaming data.