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 часто требует большего объема.