title: If dataframes in Spark are immutable, why are we able to modify it with operations such as withColumn()?
body: <p>This is probably a stupid question originating from my ignorance. I have been working on PySpark for a few weeks now and do not have much programming experience to start with. </p>
  
  <p>My understanding is that in Spark, RDDs, Dataframes, and Datasets are all immutable - which, again I understand, means you cannot change the data. If so, why are we able to edit a Dataframe's existing column using <code>withColumn()</code>?</p>