我有 2 个类似“数据框”的大型 csv 数据集,每个数据集有 4 列。column1+column2 是键,column4 是我要比较的值。key1 和 key2 相同,可以比较 val,key1 和 key2 可以重复,key1 有大约 1M 的唯一记录,key2 有 4000 条唯一记录。
col1, col2, col3, col4
key1, key2, ignore, val
使用 dataframe 可以很容易,但是当涉及到每个数据集 100GB 时,它无法将所有数据加载到内存中,并且 pandas dataframe 限制了 48GB 的对象大小。
我目前有一个程序:
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 分钟的运行时间有什么合理的想法吗?重新设计程序也是可以接受的。
提前致谢。