最近在做一个系统的优化,希望能得到大家的帮助
这是一个比较原始的统计系统,统计的是应用中的埋点日志。统计的量级在每天 5000w 行左右,文件大小在 5G 左右。
现在的统计方法是,将日志按行读取,解析出来放在内存中,为啥呢,因为埋点的日志之间有关联性,需要在内存中将这其中的埋点日志关联关系找出来,比如说埋点日志状态跳转 A->B->C->D,A/B/C/D 都是一条埋点日志 结构是一样的 但是具体的信息不同,尤其是其中包含的状态信息不同。
1
Debiancc 2018-03-28 16:09:53 +08:00
上 ETL 吧
hadoop || spark || MongoDB map-reduce 也行 然后开始数据搬砖,一遍不够就开始洗第二遍 手动的办法其实也是 ETL 的思路,你得建立数据仓库 把所有的数据压在内存上是不对的,如果没有关联依赖 用 steaming 或许是个不错的办法 |
2
tonylinzhen 2018-03-28 17:33:07 +08:00
什么叫吧日志的关联关系找出来?
你是要生成一棵棵树么 并没有说你需要统计什么? 使用 mr 的思路应该可以解决 ,不需要全部放内存 你可以用 session 作为存储单元 放到 kv 数据库里,然后你需要哪个 session 就 get 出来 ,再生成关系树 |
3
hechen0 OP @tonylinzhen 关联关系现在是用链表
|