У меня есть 2 больших набора данных csv типа dataframe, каждый из которых имеет 4 столбца.column1 + column2 - это ключ, column4 - это значение, которое я хочу сравнить.key1 и key2 одинаковы, он может сравнивать val, key1 и key2 могут дублироваться, key1 имеет около 1M уникальных записей, key2 имеет 4000 уникальных записей.
col1, col2, col3, col4
key1, key2, ignore, val
Это может быть очень просто с использованием фрейма данных, но когда дело доходит до 100 Гбайт каждого набора данных, он не может загрузить все данные в память, и пандас фрейм данных ограничивает размер объекта 48 Гбайт.
У меня в настоящее время есть программа:
1. iterate dataset1 and get a unique column1 set (1M records).
2. load the set into a queue and build a threadpool.
3. Each thread will get 10k records from queue and iterate 2 datasets to build 2 hashmaps, (key1+key2) as key, and column4 as val.
4. compare hashmap and output the results to a singal CSV file.
Это приведет к 5 часам работы.Мой вопрос: есть ли разумная идея, чтобы получить около 30 минут бега?Редизайн программы тоже приемлем.
Заранее спасибо.