RDDs are created for finite sets of data out of a database or a data lake and get processed in a batch fashion. DStream is built on top of RDD and ingests the incoming streaming data and converts them into micro-batches based on a time batch interval. Ultimately, DStream is meant for continous processing that always runs when there is new data where classical spark jobs tear down and finish at some point of time.