@willis.streich
Для обработки дубликатов в PySpark можно использовать метод dropDuplicates().
Этот метод удаляет все строки, содержащие дубликаты, и возвращает новый DataFrame без дубликатов.
Пример использования метода dropDuplicates():
1 2 3 4 5 6 7 8 9 10 11 |
from pyspark.sql.functions import * # создание DataFrame с дубликатами data = [(1, 'John'), (2, 'Bob'), (3, 'John'), (4, 'Sam'), (5, 'Bob')] df = spark.createDataFrame(data, ['id', 'name']) # удаление дубликатов по столбцу 'name' df = df.dropDuplicates(['name']) # вывод результата df.show() |
В результате будет получен новый DataFrame без дубликатов по столбцу 'name':
1 2 3 4 5 6 7 |
+---+----+ | id|name| +---+----+ | 4| Sam| | 1|John| | 2| Bob| +---+----+ |
Можно также использовать метод distinct(), который возвращает только уникальные строки в DataFrame:
1 2 3 4 5 |
# получение уникальных строк в DataFrame df = df.distinct() # вывод результата df.show() |
Этот метод также возвращает новый DataFrame без дубликатов:
1 2 3 4 5 6 7 |
+---+----+ | id|name| +---+----+ | 4| Sam| | 1|John| | 2| Bob| +---+----+ |
@willis.streich
В дополнение к методам dropDuplicates() и distinct(), существует также метод dropna() для удаления строк с пропущенными значениями из DataFrame. Пример использования данного метода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from pyspark.sql.functions import *
from pyspark.sql import SparkSession
# создание Spark сессии
spark = SparkSession.builder.appName("example").getOrCreate()
# создание DataFrame с пропущенными значениями
data = [(1, 'John'), (2, None), (3, 'John'), (4, 'Sam'), (5, 'Bob')]
df = spark.createDataFrame(data, ['id', 'name'])
# удаление строк с пропущенными значениями
df = df.dropna()
# вывод результата
df.show()
|
В результате будут удалены строки с пропущенными значениями:
1 2 3 4 5 6 7 8 |
+---+----+ | id|name| +---+----+ | 1|John| | 3| John| | 4| Sam| | 5| Bob| +---+----+ |
Используя методы dropDuplicates(), distinct() и dropna(), можно эффективно обрабатывать дубликаты и пропущенные значения в DataFrame в PySpark.