Мы уже рассматривали базовые функции для работы с датафреймами в 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()


А теперь давайте выясним, сколько лет самому старшему и самому младшему человеку:
data_2.agg({'age':'min'}).show()

data_2.agg({'age':'max'}).show()

Мы также можем также узнать средний возраст всех людей с помощью функции mean:
data_2.agg({'age':'mean'}).show()

А теперь определим, сколько всего данных о возрастах было представлено с помощью функции count:
data_2.agg({'age':'count'}).show()

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


Таким образом, данные уменьшились вдвое. Это означает, что мы освободили половину ресурсов.
Сортировка данных
Сортировка данных – это расположение данных в наиболее удобном порядке для более наглядного их отображения. Для примера давайте отсортируем наши данные по числовому столбцу в убывающем порядке с помощью функции orderBy():
sorted_data = data_2.orderBy('age',ascending=False).show()

Сортировать данные можно не только по числам, но и по строкам. В таком случае порядок сортировки будет определяться числовыми индексами, которые соответствуют порядковым номерам символов в алфавите:
sorted_data=data_2.orderBy('name',ascending=False).show()

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



