RDD — низкоуровневая распределённая коллекция объектов без схемы оптимизатора; DataFrame — таблица со схемой и Catalyst/Tungsten оптимизациями; Dataset (JVM) — типизированный DataFrame.
Разбор
- В Python обычно DataFrame; Dataset полезен в Scala.
- RDD нужен для особого контроля партиций/кастомных типов, когда DataFrame API не хватает.
- Большинство ETL пишут на DataFrame/SQL.
- Конвертация DF↔RDD возможна, но теряется часть оптимизаций.
Итог
DataFrame/SQL — default; RDD — низкий уровень без Catalyst.