спарк начинает, с чего получилось. А получается вот что: val splitFiles = selectedPartitions.flatMap { partition => … }.sortBy(_.length)(implicitly[Ordering[Long]].reverse)
проверял на 500k партиций, пустые скипаются за 0,1-2 секунды каждая, оставшиеся работают 2-5 минут каждая. Конечно, выглядит, как будто пустые вначале выполнены, а объёмные в конце))