Spark. DataFrame и Dataset

DataFrame — это распределенная коллекция данных в Apache Spark, организованная в виде таблицы со строками и столбцами, аналогичной таблицам в реляционной базе данных. DataFrame предоставляет схему, которая описывает данные, и позволяет выполнять SQL-запросы и использовать функции Spark SQL.

Dataset — это слой абстракции Apache Spark над RDD, который объединяет функциональные возможности DataFrame и безопасность типов RDD. Dataset поддерживает как оптимизацию данных с использованием Catalyst оптимизатора, так и проверку типов на этапе компиляции.

Сравнение с RDD

  • Структурированность: DataFrame имеет схему, определяющую структуру данных (колонки и их типы), тогда как RDD — это коллекция объектов без структуры.
  • Оптимизация: DataFrame оптимизируется с помощью Catalyst оптимизатора и может использовать Tungsten для оптимизации выполнения, что делает его более производительным в сравнении с RDD.
  • Безопасность типов: DataFrame обеспечивает проверку типов во время выполнения, в то время как RDD может быть более гибким, но без проверки типов.
  • Интерфейс: DataFrame поддерживает интерфейс, подобный SQL, для выполнения операций, тогда как RDD требует использования низкоуровневых функциональных API.
  • Использование памяти: DataFrame может быть более эффективным в использовании памяти благодаря оптимизациям, в то время как RDD часто требует большего объема.