参考csdn博主July的有关文章。
可以去他主页看有关内容:
http://blog.csdn.net/v_JULY_v/article/details/6279498
http://blog.csdn.net/v_july_v/article/details/7382693
bitmap
http://blog.csdn.net/v_july_v/article/details/6685962
bloom filter
http://blog.csdn.net/v_july_v/article/details/6685894
首先,由于数据量很大,无法在内存中直接存储,传统的排序等预处理操作也无效。所以主要思想是分而治之。使用hash,将一个大文件,转换为多个小文件,对小文件进行处理,再汇总结果。
其中有些好用的技术,如bit map,bloom filter等。bit map,使用一个位的0,1来表示这个数字有没出现过。bloom filter,引入了误差率,使用m位数组,k个hash函数还做数据的对应。
还有map reduce,也是很火的技术。
当然,要进行估算,要明白一些基本的估算值:
1 G = 1024M = 2^30 Byte
1 M = 1024KB = 2^20 Byte
1 KB = 1026Byte = 2^10 Byte
1 Byte = 8 bit
一个int是32位的话,值范围是-2147483684--2147483647,也就是2^31 = 2147483648.
2^10 = 1,024
2^20 = 1,048,576 (一百万, million) (7位,6个零,一百万 M)
2^30 = 1,073,741,824 (十亿,billion) (10位,9个零,十亿 G)
2^40 = 1,099,511,627,776 (一万亿,trillion)(13位,12个零)