How do you handle data skew in a Spark application when performing a heavy aggregation or join operation?