eason_chen 写道
icewubin 写道
sdh5724 写道
100亿行, 你觉得在一个机器能归并出来么。。你的IO交换要达到多少?
这有什么问题么?两次IO就结束了,有什么困难的。
上个月我还用Java写了个1千万行的归并排序,每行数据量不是非常大,总共1.7G,一般的台式机5分钟跑完。
可否把代码贴出来学习一下...
那是给兴业银行做的项目,不能随便上代码。而且实际代码做的是比对差异,排序只是为了比对差异做基础而已。
我说一下大概思路吧:
1.因为我机器的JVM配的不大,所以测试的时候每5万行记录先做一次排序并写入一个小文件,利用java.util.TreeSet。
2.然后再对200个文件做归并,先从200个小文件中取出第一个元素(就是一行),再次放入一个java.util.TreeSet,然后移除first,同时判断first移走的那个元素来自于哪个文件,然后从那个文件再取一个元素,然后再次移走第一个元素。。。循环
直到每个文件都为空且TreeSet中为空即可。