我正在编写hadoop中的一种字数(目前在vmware播放器上运行的独立伪分布式虚拟机上)。
我有一个巨大的100GB xml文件要读取(接近1.25亿行)。我逐行读取它,对于每个单词我把它放在FileHashMap中,其中key是单词,value是occurrency。
我使用标准的BufferedReader来读取文件,但它太懒散了,所以我开始使用apache commons io库来读取文件,它真的比之前更快,
LineIterator it = FileUtils.lineIterator(theFile, "UTF-8");
try {
while (it.hasNext()) {
String line = it.nextLine();
// do something with line
}
} finally {
LineIterator.closeQuietly(it);
}
但是迟早(接近4千万行),它变得又慢了(我想在内存耗尽时换掉高清......我是对的吗?)
所以问题是:我已经离开哪个解决方案(配置,数据结构......)来解决问题了?