If a spot instance is reclaimed in the middle of a job, then spark will treat it as a lost worker. The spark engine will automatically retry the tasks from the lost worker on other available workers.
So the query does not have to start over if individual workers are lost. However, if there was temporary data on the node that was lost it will have to be recomputed, which could lead to longer runtimes. For that reason it is only recommended to use spot instances when variation in job runtimes is acceptable.