1G日志文件解析

面试题Category: Java1G日志文件解析
中x工程师 Staff asked 1 year ago

1G日志文件,每行大小17K,内存1M,请统计出现次数排名前3的词
 
大概是上面的意思,题目记得不是太详细

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 1G日志文件解析

FavoriteLoading添加本文到我的收藏
wfh6732 Staff replied 9 months ago

这个问题我遇到过, 用java应该是无法解决. 需要用shell 脚本.

3 Answers
fingthinking Staff answered 12 months ago

若为纯英文的,使用Trie树进行压缩,或许可以压缩

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 回答1G日志文件解析

FavoriteLoading添加本文到我的收藏
db_boy Staff replied 6 months ago

这个问题类似《编程珠玑》里一次友好回话的问题,可以借鉴下

db_boy Staff replied 6 months ago

这个问题类似《编程珠玑》里一次友好回话的问题,可以借鉴下

freecs Staff answered 9 months ago

java 读取1G 的文件到内存不现实,需要将文件先分割为多个(RandomAccessFile seek(start)),假设分割为100M一个文件,1G文件分为 10个100M + 24M 的文件。再多线程读取每个文件中出现频率最高的单词,然后主线程再合并这11个线程的高频词,取出现最多的3个。
具体获取单个文件中最高的词,可以用一个hashmap, key 就是 word,value是WordStats{word, counter}对象,读取文件一行,取出单词put到map,并计数,文件读取完后,对 hashmap.values() 进行排序(counter倒序),取出前3个返回到主线程。

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 回答1G日志文件解析

FavoriteLoading添加本文到我的收藏
db_boy Staff answered 6 months ago

这个问题类似《编程珠玑》里一次友好回话的问题,可以借鉴下

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 回答1G日志文件解析

FavoriteLoading添加本文到我的收藏

return top