How does Apache Spark handle data skewness, and what techniques can you use to mitigate it during join operations?