A Deep Dive Into Spark Datasets and DataFrames Using Scala