Hi Andrew I would suggest starting with the Spark UI to identify which stages are taking the most time. Large data shuffles and uneven partitions can often slow down Spark jobs. Try filtering data early, selecting only the columns you need, and checking your join operations. If you are joining a large dataset with a much smaller one, a broadcast join may improve performance. Also, avoid using collect on large datasets because it can put too much pressure on driver memory. These steps should help you identify and reduce common performance bottlenecks.