Writing type-safe Spark transformations

Meta-level operations on a Spark data frame