Анализ больших данных в Apache Spark: 3 главных функции для работы с датафреймами

Spark, фреймворк, Data Science, датафрейм, анализ

Мы уже рассматривали базовые функции для работы с датафреймами в Apache Spark. Сегодня поговорим о том, какие функции используются при детальном анализе данных в датафреймах (dataframe) Spark, рассмотрев несколько практических примеров.

3 функции для расширенной работы с датафреймами в Apache Spark

Фреймворк Apache Spark позволяет проводить углубленный анализ данных при работе с датафреймами с помощью специальных функций для преобразования данных с целью их наглядного представления. Наиболее востребованными из этих функций можно назвать следующие:

  • удаление дубликатов;
  • сортировка;
  • функции агрегации.

Каждую из этих функций мы подробнее рассмотрим далее.

Агрегация датафреймов в Apache Spark

Функции агрегации служат для объединения всех элементов столбца датафрейма и выполнения последующих преобразований над ними. К функциям агрегации относятся следующие:

  • count – нахождение количества элементов;
  • max – нахождение наибольшего значения;
  • min – нахождение минимального значения;
  • mean – нахождение среднего значения (для числовых типов);
  • sum – нахождение суммы всех элементов столбца (для числовых типов).

Для того, чтобы применить агрегирующую функцию, необходимо вызвать метод agg(), а затем в качестве параметра передать пару {столбец: функция}. В качестве примера найдем сумму возрастов всех людей:

my_schema=StructType([StructField('id',IntegerType(),True),\
StructField('name',StringType(),True),\
StructField('age',IntegerType(),True),\
StructField('country',StringType(),True),])
data_2=spark.createDataFrame([(1,'Alice',25,'USA'),(2,'John',45,'Canada'),(3,'Michael',37,'USA)',
(4,'John',50,'Canada'),
(5,'Emmet',25,'Canada')],\
['id','name','age','country'],my_schema)
data_2.agg({'age':'sum'}).show()
Spark, фреймворк, Data Science, датафрейм, анализ
Исходные данные
Spark, фреймворк, Data Science, датафрейм, анализ
Результат нахождения суммы

А теперь давайте выясним, сколько лет самому старшему и самому младшему человеку:

data_2.agg({'age':'min'}).show()
Spark, фреймворк, Data Science, датафрейм, анализ
Минимальный возраст
data_2.agg({'age':'max'}).show()
Spark, фреймворк, Data Science, датафрейм, анализ
Максимальный возраст

Мы также можем также узнать средний возраст всех людей с помощью функции mean:

data_2.agg({'age':'mean'}).show()
Spark, фреймворк, Data Science, датафрейм, анализ
Средний возраст

А теперь определим, сколько всего данных о возрастах было представлено с помощью функции count:

data_2.agg({'age':'count'}).show()
Spark, фреймворк, Data Science, датафрейм, анализ
Количество данных

Таким образом, мы видим, что с помощью агрегирующих функций можно работать с множеством данных, как с одним элементом.

Удаление дубликатов

Удаление дубликатов – это функция, которая позволяет убрать повторяющиеся значения, не имеющие отношения к основным данным. Как правило, такие значения рекомендуется удалять, так как они занимают дополнительные ресурсы, замедляя процесс анализа, а также приводят к некорректным результатам. Для удаления дубликатов используется функция distinct(). Давайте уберем дубликаты с помощью этой функции:

duplicate_data = data_2
duplicate_data.show()
clear_data = duplicate_data.distinct().show()
Spark, фреймворк, Data Science, датафрейм, анализ
Данные с дубликатами
Spark, фреймворк, Data Science, датафрейм, анализ
Данные без дубликатов

Таким образом, данные уменьшились вдвое. Это означает, что мы освободили половину ресурсов.

Сортировка данных

Сортировка данных – это расположение данных в наиболее удобном порядке для более наглядного их отображения. Для примера давайте отсортируем наши данные по числовому столбцу в убывающем порядке с помощью функции orderBy():

sorted_data = data_2.orderBy('age',ascending=False).show()
Spark, фреймворк, Data Science, датафрейм, анализ
Отсортированные данные по столбцу «age»

Сортировать данные можно не только по числам, но и по строкам. В таком случае порядок сортировки будет определяться числовыми индексами, которые соответствуют порядковым номерам символов в алфавите:

sorted_data=data_2.orderBy('name',ascending=False).show()
Spark, фреймворк, Data Science, датафрейм, анализ
Отсортированные данные по столбцу «name»

Таким образом, благодаря функциям для расширенной работы с данными, Apache Spark позволяет вести детальный анализ данных, что делает его весьма полезным инструментом для Data Scientist’а и разработчика Big Data приложений. В следующей статье мы продолжим говорить про датафреймы и рассмотрим взаимодействие Spark и Pandas.

Более подробно про применение Apache Spark в проектах анализа больших данных, разработки Big Data приложений и прочих прикладных областях Data Science вы узнаете на практических курсах по Spark в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.

Записаться на курс

Смотреть раcписание

Добавить комментарий

Поиск по сайту