在实验室做事情,帮着学长处理比较大的数据(至少对我来说比较大)。有80G的纯文件,需要对其中的数据进行处理,筛选。我先用了其中的13.4M的数据进行试一下。
目标:
数据是csv文件,需要对其中符合某个条件的数据提取出来,并且对该数据进行操作,选择该数据中的其中一部分,然后再写入数据库
实现:
普通流读取:
单纯按行读出:200-300ms
处理:800-1000ms
NIO内存映射
单纯读出:30-50ms
处理:2300-2500ms左右
原因:读出数据后需要进行操作。使用内存映射方法,需要处理缓冲区,比较麻烦。估计是处理数据并写回数据花费了大量时间
导入
100s
整体:0.8+100=100.8
1024/13*100.8/60*80=。。。不敢算,80G 的数据需要太长的时间.....
所以怎么才能快速的处理这些数据呢...
NIO的入门教程,感觉很清晰:http://www.ibm.com/developerworks/cn/education/java/j-nio/index.html