How do you handle data skew and partitioning when processing large-scale event streams in a distributed environment?