Как обрабатывать дубликаты в PySpark?

Пользователь

от willis.streich , в категории: Python , год назад

Как обрабатывать дубликаты в PySpark?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jaren , год назад

@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|
+---+----+


Пользователь

от narciso , месяц назад

@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.