Низкое использование ресурсов при использовании дедупе

Мне нужно найти дубликаты в большом наборе данных, поэтому я тестирую библиотеку дедупликации python.

Я знаю, что это рекомендуется для небольших наборов данных, поэтому я подумал, что использование хорошей машины может улучшить производительность. У меня есть машина с 56 ГБ оперативной памяти, и я запускаю тест, похожий на "csv_example" для набора данных с 200000 строк. Это работает, но использование памяти очень низкое и, следовательно, обработка (ЦП).

Кажется, на этапе блокировки это занимает слишком много времени:

INFO:dedupe.blocking:10000, 110.6458142 seconds
INFO:dedupe.blocking:20000, 300.6112282 seconds
INFO:dedupe.blocking:30000, 557.1010122 seconds
INFO:dedupe.blocking:40000, 915.3087222 seconds

Может ли кто-нибудь помочь мне улучшить использование или сказать, есть ли какая-либо библиотека / настройка, которая заставляет программу использовать больше доступных ресурсов?

2 ответа

Решение

Какую версию дедупе вы используете? По состоянию на 1.6.8, он должен легко обрабатывать набор записей такого размера.

Тем не менее, общее руководство заключается в том, что когда вы сталкиваетесь с проблемами с памятью, переключитесь на блокировку базы данных, как в примере с postgres.

(Я главный автор дедупа).

Я успешно использовал библиотеку dedupe python для дедупликации 16 миллионов записей, однако 16 миллионов записей не поместятся в память компьютера, поэтому я дедуплицировал X записей за раз (через postgres), т.е. при 10 000 записей наихудший сценарий — максимальное использование ОЗУ на уровне 64 ГБ нашего экземпляра EC2.

https://ronbeltran.pages.dev/2022/08/using-python-dedupe-library-millions-records/

Другие вопросы по тегам