单机实现1T大文件的计算
需求:文件大小1T,存储方式为行存储,其中有两行内容一致,但不确定行位置,需要找出相同两行数据;
要求:单机,内存不超过128M,不可能放下全量数据
解决方案一:
不考虑时间成本,冒泡排序原理,逐行比较,读出第一行数据与后面每一行数据比较,没有相等则继续读取第二行再比较。。。。理论上是可以实现的,只是循环次数比较多,用时间成本换取了空间成本
方案二:分治法
思想:把该大文件文件分类切割成若干个小文件分别存储,然后分别读取小文件再做比较
步骤:
1、1T=1024GB=1048576MB,如果把文件切割成100M大小,会有10486个文件
2、按行读取内容,算出hashcode值(相同字符串hashcode一致),与10486模运算,一样的值放到同一个文件
3、文件已经切割完毕,现在能肯定的是相同的两行在同一个小文件中,只需循环读取小文件内容作对比就行了
这样,比方案一省时间,最多遍历两边整个数据就能找出结果。。。。