Да, только результат выбора кэшируется после выполнения действия.Оператор select возвращает фрейм данных, то есть фрейм данных, который кэшируется.
Обратите внимание, что в вашем коде кеширование еще не произошло, поскольку никаких действий не предпринимается.Вам нужно выполнить какое-то действие, чтобы заполнить кеш, например
df.select($"a.b.c" as "c").cache().count()