大文本按行去重(2G 左右文件)有什么好的解决方案吗?
資深大佬 : sl19981007 9
速度可以稍慢一点,但也不能太慢(一两个小时跑不完那种 不使用 Spark 之类的计算引擎 麻烦大佬们给小弟个解决方案
大佬有話說 (36)
速度可以稍慢一点,但也不能太慢(一两个小时跑不完那种 不使用 Spark 之类的计算引擎 麻烦大佬们给小弟个解决方案
会用 pandas 用 pandas 不会就用 python 的 set 来实现 处理速度基本等同于 io 的速度
如果是要多个任务同时处理时间复杂度优先 内存够大直接搞个 celery 之类的多线程库就行了 内存不够大就锁队列 只允许 n 个任务同时运行
更简单一点可以输入多个路径 挨个处理 连多线程库都不用上 就是同时只能有一个任务正在运行 但你这个需求 最大瓶颈在于硬盘 io 所以多个并行或者串行影响都不大
一堆超大文件倒是可以试试我的 nabhash
http://nabhash.org/
如果 pc 机内存不够可以对每行数据进行 hash 后取模分布在 n 个文件中,然后再将这 n 个文件分别 load 进内存去重
一般都是按 hash 拆分, 然后处理每个小文件, 最后再合并.