热线电话:13121318867

登录
首页精彩阅读处理大数据量的算法的一些心得 _数据分析师
处理大数据量的算法的一些心得 _数据分析师
2014-12-11
收藏

处理大数据量的算法的一些心得 _数据分析师


几百万的待处理目标,有木有!每一个目标有几十个附加信息也要处理,有木有!内存永远是不够的,有木有! 只有用文件来帮忙,有木有!

 把数据都载入内存? 呵呵,我是不会有这种想法了。 可以不与文件打交道吗?想都不用想。 碰见大数据,一定要将数据保存在文件里,然后通过反复读写文件,将数据加载到内存中,再进行对数据的处理。对了,反复读写文件,一定会很慢的,要提高速度,暂时学到两个方法:1---通过内存映射,将文件地址映射到内存中,这样加载文件中数据到内存会快很多(当然我碰到过要读取几千万,几亿次的情况,一样不达标,但是总比文件api快不知道哪里去了) 2---采取分块处理,分片处理的方法,建立缓冲区,将相关数据读取到内存中,比如要处理a, 但是处理a要用到b,那么我们可以先读取a,再读取b,处理ing,完毕后,将a写入文件,将b写入文件。那么以后处理b呢,我们又要再一次将b读入到内存中,重复操作,费时,更优的方法当然是处理完a后,暂时保留b在内存中,等到将b(当然可能还有cdefg)也处理完后,再释放。不过,代价就是要贡献一点内存(内存实在是太宝贵了,真心舍不得)。

 
关于内存映射,只会基本操作,但是有时出现莫名其妙的问题,一般是映射的文件多了后发生,比如今天(到no.100后就说heap corruption,这是虾米情况,关堆屁事),一定要解决,搞懂原理!!!

将数据保存到文件中的时候,有两种方式,文本方式和二进制方式,二进制一定是优先的,方便很多,数据会保存的比较整齐。文本方式就是方便查看,一般情况下,文本方式要比二进制方式麻烦很多(二进制文件占用空间小,载入内存更加方便,当然,特殊情况除外)。

 以上是对大数据的暂时认识,希望能有进步,对这个能有新的认识和更先进的方法

数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询