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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от jaren , 10 месяцев назад

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