Иногда драйверу нужно много информации о виде данных, к примеру, нужно прочитать миллионы файлов. Для начала драйвер может создать джобу для того, чтобы получить статус каждого файла, и экзекуторы сделают эту работу, передадут результат на драйвер, и дальше драйвер локально будет решать, читать этот файл отдельно, разделить его на несколько блоков, или наоборот, соединить несколько файлов в одну партицию RDD. Так что драйвер строит план, но не обходится без помощи, ведь это и есть фишка Spark - распределённость