Ответ 1
Вопрос: В чем разница в этих двух подходах? Есть ли какой-либо выигрыш в производительности при использовании API Dataframe?
Ответ:
Существует сравнительное исследование, выполненное Хортоном. источник...
Суть основана на ситуации/сценарии, каждый из которых прав. здесь нет твердое и быстрое правило, чтобы решить это. Просьба пройти ниже.
RDD, DataFrames и SparkSQL (Infact 3 подходит не только 2):
В своей основе Spark использует концепцию отказоустойчивых распределенных наборов данных, или RDD:
- Эластичный - в случае потери данных в памяти их можно восстановить
- Распределенный - неизменяемый распределенный набор объектов в памяти, разделенный на множество узлов данных в кластере
- Набор данных - исходные данные можно получить из файлов, создать программным способом, из данных в памяти или из другого СДР
DataFrames API - это структура абстракции данных, которая организует ваши данные в именованные столбцы:
- Создать схему для данных
- Концептуально эквивалентно таблице в реляционной базе данных
- Может быть создан из многих источников, включая файлы структурированных данных, таблицы в Hive, внешние базы данных или существующие RDD
- Предоставляет реляционное представление данных для простых SQL-операций, таких как манипулирование данными и агрегирование
- Под капотом находится ряд СДР
SparkSQL - это модуль Spark для структурированной обработки данных. Вы можете взаимодействовать с SparkSQL через:
- SQL
- API DataFrames
- API наборов данных
Результаты теста:
- RDD превзошли DataFrames и SparkSQL для некоторых типов обработки данных
DataFrames и SparkSQL работали почти одинаково, хотя с анализом, включающим агрегацию и сортировку, SparkSQL имел небольшое преимущество
С точки зрения синтаксиса, DataFrames и SparkSQL гораздо более интуитивно понятны, чем использование RDD
Взял лучшее из 3 для каждого теста
Время было последовательным, и между тестами не было больших различий
Задания выполнялись индивидуально, остальные задания не выполнялись
Случайный поиск по 1 идентификатору заказа из 9 миллионов уникальных идентификаторов заказа Сгруппируйте все различные продукты с их общими счетчиками и сортировкой по убыванию по названию продукта