The combination of DataFrames and structured programming is a powerful concept that helps us to separate the data layer from the stream, which makes the programming significantly easier. One of the biggest drawbacks with DStream (pre-Spark 2.0) was its inability to isolate the user from details of the underlying details of stream/RDD implementation.
Documentation for DataFrames: