Данные могут присутствовать в одном узле, поэтому вы можете каждый раз получать одно и то же имя хоста. Попробуйте увеличить количество разделов ваших данных, это приведет к распределению данных. Тем не менее, нет никакой гарантии, что будут задействованы все исполнители. Хорошее количество разделов составляет go по этой формуле:
количество разделов = 3 * количество процессоров в вашем кластере
Это, скорее всего, распределит ваши data, и когда вы запустите код, вы будете выполняться на разных исполнителях.
Для увеличения разделов вы можете использовать:
data.repartition(<number of partitions>)
А также вы можете использовать функцию mapPartitions вместо map, если все, что вам нужно, это имя хоста для раздела.