PySpark ML — это мощная библиотека, обеспечивающая масштабируемое и распределенное машинное обучение на больших данных с помощью Apache Spark. Функции играют решающую роль в PySpark ML, позволяя эффективно преобразовывать данные и манипулировать ими. В этой статье мы рассмотрим различные методы, доступные в PySpark ML для работы с функциями, а также примеры кода, иллюстрирующие их использование.
- Пользовательские функции (UDF):
Пользовательские функции позволяют определять пользовательские функции, которые можно применять к кадрам данных PySpark. Эти функции можно написать на Python или других поддерживаемых языках и применять к отдельным столбцам или ко всем кадрам данных. Вот пример пользовательской функции, которая возводит в квадрат значения в столбце:
from pyspark.sql.functions import udf
from pyspark.sql.types import IntegerType
# Define a UDF
square_udf = udf(lambda x: x2, IntegerType())
# Apply the UDF to a DataFrame column
df.withColumn('squared_values', square_udf(df['values']))
- Встроенные функции.
PySpark ML предоставляет широкий спектр встроенных функций, которые можно использовать для решения типичных задач обработки данных. Эти функции доступны в модулеpyspark.sql.functions
. Вот пример, демонстрирующий использование функцийcol
иwhen
:
from pyspark.sql.functions import col, when
# Select rows where 'age' is greater than 30
df.select('name', 'age').where(col('age') > 30)
# Create a new column based on a condition
df.withColumn('age_category', when(col('age') > 30, 'Old').otherwise('Young'))
- Функции агрегирования.
Функции агрегирования помогают суммировать данные путем группировки и вычисления совокупных значений. PySpark ML предоставляет богатый набор функций агрегирования в модулеpyspark.sql.functions
. Вот пример, демонстрирующий использование функцийsum
иavg
:
from pyspark.sql.functions import sum, avg
# Compute the sum of a column
df.select(sum('sales'))
# Compute the average of a column by group
df.groupBy('category').agg(avg('sales'))
- Оконные функции.
Оконные функции позволяют выполнять вычисления над набором строк, связанных с текущей строкой. Они особенно полезны для таких задач, как ранжирование, накопление сумм и скользящие средние. PySpark ML предоставляет оконные функции в модулеpyspark.sql.functions
. Вот пример, демонстрирующий использование функцийrow_number
иlag
:
from pyspark.sql.functions import row_number, lag
from pyspark.sql.window import Window
# Assign a unique row number within each category
window = Window.partitionBy('category').orderBy('sales')
df.withColumn('row_number', row_number().over(window))
# Compute the difference between current and previous row's sales
df.withColumn('sales_diff', col('sales') - lag('sales').over(window))
В этой статье мы рассмотрели несколько методов работы с функциями в PySpark ML. Мы рассмотрели определяемые пользователем функции (UDF), встроенные функции, функции агрегации и оконные функции, предоставив примеры кода для каждого метода. Используя эти мощные методы, вы можете эффективно обрабатывать и преобразовывать крупномасштабные данные с помощью PySpark ML.