Этот пост посвящен началу работы с pyspark и рассмотрению основных команд и функций.

Spark сам по себе огромен и выглядит пугающе, когда вы начинаете учиться, но лучший подход — начать с чего-то, и эта страница как раз об этом.

Прежде чем мы начнем, сначала убедитесь, что в вашей среде установлен Spark, Python.

SparkContext

SparkContext — это точка входа для начала использования любых функций spark. Наиболее важным шагом любого приложения драйвера Spark является создание SparkContext. Это позволяет вашему приложению Spark получать доступ к кластеру Spark с помощью диспетчера ресурсов (YARN/Mesos).

Теперь давайте погрузимся в кодирование.

Приведенный выше код создаст или вернет существующий сеанс искры.

набор данных: https://www.kaggle.com/fedesoriano/heart-failure-prediction

Чтение данных

Следующий код будет читать CSV-файл.

Хотя это может показаться очень простым, существует множество методов выполнения задачи, и каждый из них работает по-своему.

  1. read.options('header','true') : будут считаны все данные и заголовки, но все столбцы будут строкового типа.
  2. read.csv(): этот метод имеет несколько параметров, как вы можете видеть, первый способ сделать это использовать «схему», а второй — использовать «inferSchema».

Итак, разница в том, что, указав «схему», мы можем предоставить искровую информацию о столбцах и их типах данных. Использование искры «inferSchema» должно выполнять эту работу. Лучший способ увидеть разницу — запустить обе части одну за другой и проверить интерфейс искры. Когда вы запускаете код inferSchema, вы увидите выполнение искрового задания, чего не происходит, когда вы указываете схему. Для больших файлов всегда лучше предоставлять схему, так как это не будет выполняться как задание, а также быстрее.

Итак, когда вы запускаете код «inferSchema», ваш интерфейс искры будет выглядеть примерно так:

Запись данных

  1. df.write.format() : этот метод просто создаст файл и запишет в него.
  2. df.wriet.format().mode («перезаписать»): этот метод перезапишет существующий файл.

Обе функции будут выполнять искровое задание.

Получить схему

Чтобы получить имена столбцов, типы данных и если столбцы принимают нулевые значения, мы можем использовать:

Это вернет

Кроме того, вы также можете использовать «df.dtypes» — для получения столбцов и типов данных в виде списка.

Изменить тип данных столбца

Во-первых, импортируйте тип данных и, используя команду «withColumn» вместе с командой «cast», мы можем изменить тип данных столбца.

Удалить столбец

Это можно сделать с помощью df.drop(‘Age’)

Сводная статистика

Чтобы получить сводную статистику о ваших данных, нам нужно выбрать интересующие столбцы, затем «описать» и, наконец, команду «показать».

Эта команда вернет статистику наших данных следующим образом:

Договариваться с АН

  1. Отбросьте все строки, содержащие любые значения NA
  2. Отбросить все строки, где все значения NA
  3. Отбросить все строки, в которых по крайней мере 2 или более значений не соответствуют Н/Д.
  4. Удалить все строки, в которых любое значение в определенных столбцах равно NA
  5. Заполните пропущенные значения в определенном столбце знаком «?»
  6. Менее грубый способ - использовать метод Imputer. Сначала запустите его со столбцами, которые вы хотите заполнить нулями в качестве входных и выходных столбцов. Затем установите стратегию замены, такую ​​как среднее значение столбца (также может быть режим и т. д.). Затем нам просто нужно подогнать импутер к данным и преобразовать.

Фильтрация данных

Существует множество методов фильтрации данных на основе некоторого условия.

eg-

выход-

Другие методы-

  1. используя команду фильтра со строкой, содержащей столбец и условие
  2. где просто псевдоним для фильтрации и дает тот же результат
  3. вместо строки можно даже вставить df[col] и применить условие
  4. для применения нескольких условий мы можем использовать ‘&’ , ‘|’
  5. используя «~», мы можем выбрать все строки, которые не соответствуют условию.

Строковое выражение

Иногда проще отфильтровать или добавить на основе строки/выражения, это можно сделать с помощью «expr».

выход-

Группировать по

Команда «groupby» позволяет разделить ваши данные на группы на основе некоторого столбца, здесь мы использовали «возраст».

Затем мы можем рассчитать статистику для каждой группы, нам нужно выбрать столбцы для расчета статистики.

Чтобы отсортировать данные, нам нужно импортировать desc/asc, сохранить результат «groupby» в некоторой переменной и применить «orderBy()», как показано.

Несколько статистических данных

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

Затем мы можем применить несколько необходимых вам статистических данных (F.max, F.min) и команду агрегирования (agg).

Мы даже можем использовать команду groupby для расчета статистики для каждой группы.

Использование команд SQL

Мы даже можем запускать команды SQL для данных.

Сначала нам нужно создать временное представление фрейма данных. Затем мы можем отфильтровать данные из него с помощью «spark.sql».

Мы также можем комбинировать «.select» и «.sql» и выбирать столбцы в синтаксисе SQL.

Сводка

Pivot — отличный способ увидеть, как взаимодействуют несколько столбцов.

Например. давайте возьмем «возраст» и «пол», чтобы узнать больше о том, как они взаимодействуют, мы можем использовать «groupby» и поворачиваться таким образом-

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

Обе операции вернут один и тот же результат-

Объединить команды

Мы также можем комбинировать несколько команд.

Например. для создания распределения возраста по полу.

Мы можем сделать это, используя команду selectExpr, чтобы получить значения выше определенного «возраста», сгруппировав по «полу» и повернув логическую колонку «старше».

выход-

Машинное обучение

Функции

Spark не может принимать столбцы таблицы функций, такие как:

Вместо этого ему нужен один столбец, где каждая запись является вектором для столбца функций, например:

Для этого нам нужно сначала определить столбцы функций, затем импортировать VectorAssembler и инициировать его с именами столбцов функций и новым столбцом для хранения вектора. Это создает векторный ассемблер и, используя его, мы применяем к Dataframe для его преобразования.

Обучение и тестирование набора данных

Чтобы разделить данные на обучение и тестирование, мы можем просто сделать это с помощью randomSplit().

Использование модели

Чтобы использовать модель ML с pyspark, нам сначала нужно ее импортировать.

Затем инициируйте его, используя столбец вектора признаков и целевой столбец, которые нам нужно предсказать.

Подгонка модели к тренировочному набору для обучения модели. Мы даже можем проверить любые атрибуты модели.

Наконец, мы можем использовать эту модель для прогнозирования данных

Итак, теперь мы знаем основные операции pyspark и можем использовать его для задач.

Вам предстоит еще многому научиться, но это, несомненно, поможет вам.

Вы можете получить исходный код здесь — https://github.com/darshan09/Pyspark101