Each action launches a job, split into stages at shuffle boundaries, which are themselves divided into tasks, one task per partition. The tasks of a stage run in parallel on the executors. The Spark UI displays this hierarchy, which is essential for spotting a slow stage.