Лучшие функции обработки данных в PySpark

Лучшие возможности обработки данных в PySpark

Узнайте самые полезные функции при работе с большими данными в PySpark

Фото от Oskar Yildiz на Unsplash

Введение

Я ежедневно работаю с PySpark в Databricks. Моя работа в качестве Data Scientist требует от меня работы с большим объемом данных во множестве различных таблиц. Это вызывает некоторые трудности.

Как просто может показаться процесс извлечения, преобразования и загрузки (ETL), на самом деле это не всегда так. Когда мы работаем с большими данными, наше мышление должно измениться по двум причинам:

  1. Объем данных намного больше, чем у обычных наборов данных.
  2. При работе с параллельным вычислением в кластерах мы должны учитывать, что данные будут разделены между несколькими рабочими узлами для выполнения части работы, а затем будут объединены в целом. И этот процесс может занимать много времени, особенно если запрос слишком сложный.

Исходя из этого, нам необходимо научиться писать умные запросы для работы с большими данными. В этой статье я покажу несколько моих любимых функций из модуля pyspark.sql.functions, которые помогут вам при обработке данных в PySpark.

Лучшие функции

Теперь перейдем к содержанию этой статьи.

Как и во многих других языках, PySpark имеет преимущество наличия модулей, где вы можете найти готовые функции для самых разных целей. Вот тот, который мы загрузим в нашу сессию:

from pyspark.sql import functions as F

Если вы хотите увидеть, насколько обширный список функций находится внутри pyspark.sql.functions, перейдите на этот веб-сайт, где находится API Reference. Имейте в виду, что это для версии 3.5.0. В старых версиях может отсутствовать некоторые функции, которые я покажу в этой статье.

Данные

В качестве примера мы будем использовать набор данных Diamonds из ggplot2, распространяемый под лицензией MIT.

# Исходный путь к файлу
path = '/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv'
# Загрузка данных
df = spark.read.csv(path, header=True, inferSchema=True)

Создание и индексный столбец