Какие функции в основном используются для работы с датафреймами в Spark

Spark, фреймворк, Data Science, датафрейм

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

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

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

  • создание датафрейма;
  • группировка данных;
  • выборка данных.

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

Функции создания датафрейма

Создание датафрейма – это приведение данных к двумерному табличному виду для последующей работы с ними. Создавать датафрейм в Spark можно двумя способами:

  • вручную;
  • загрузить данные из внешнего источника, например, из файла.

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

my_schema=StructType([StructField('id',IntegerType(),True),\
StructField('name',StringType(),True),\
StructField('age',IntegerType(),True),\
StructField('country',StringType(),True),])
data_1=spark.createDataFrame([(1,'Alice',25,'USA'),(2,'John',32,'Canada')],\
['id','name','age','country'],my_schema)

Мы можем посмотреть, как выглядит наш датафпейм, используя метод show():

data_1.show()
Spark, фреймворк, Data Science, датафрейм
Созданный вручную датафрейм

А теперь давайте посмотрим, как можно загрузить данные из внешнего источника, создав датафрейм. В качестве примера загрузим данные из csv-файла с помощью метода spark.read.option().csv():

data_1 = spark.read.option('header','True').csv('info_data.csv',sep=',')
data_1.show()
Spark, фреймворк, Data Science, датафрейм
Содержимое csv-файла в виде датафрейма

 

Группировка данных в датафрейме

Группировка данных – это сбор уникальных данных в группы для последующего применения к ним агрегирующих функций, таких как, например, нахождение среднего значения для каждой группы, число значений для каждой группы и т.д. Для того, чтобы сгруппировать данные в датафрейме, используется метод groupBy (аналог GROUP BY в SQL). Давайте рассмотрим пример группировки данных и найдем, сколько человек проживает в каждой стране. Для этого нам нужно сгруппировать наши данные по столбцу “country”:

data_1.groupBy('country')

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

type(data_1.groupBy('country')) ### pyspark.sql.group.GroupedData

Как мы видим, для таких данных в Spark есть специальный тип GroupedData. Для того, чтобы данные вновь стали датафреймом, необходимо применить к ним агрегирующую функцию. Давайте, наконец, посчитаем сколько человек проживает в каждой из стран с помощью агрегирующей функции count():

data_1.groupBy('country').count().show()
Spark, фреймворк, Data Science, датафрейм
Количество людей в каждой из стран

Выборка данных в датафрейме

Выборка данных в Spark-датафрейме – это формирование нового датафрейма на основе отбора необходимых столбцов из предыдущего. Для выборки данных в Apache Spark, как и в SQL существует специальный метод select(). Давайте посмотрим, как он работает в PySpark на практическом примере:

data_1.select('country','name','last_name').show()
Spark, фреймворк, Data Science, датафрейм
Результат простой выборки

В Spark также существует возможность выборки данных с условием. Для этого метод select() вызывается совместно с методом задачи условия where(). В качестве примера давайте получим информацию о людях, которые проживают в Бангладеш:

data_1.select('country','name','last_name').where(col('country')=='Bangladesh').show()
Spark, фреймворк, Data Science, датафрейм
Люди, проживающие в Бангладеш

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

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

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

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

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