Низкое использование ресурсов при использовании дедупе
Мне нужно найти дубликаты в большом наборе данных, поэтому я тестирую библиотеку дедупликации 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/