一、背景
入职后第一个上手项目。从一堆日志中提取出特定字段,然后导入数据库。
二、问题
1. 日志在不同的服务器上
2. 单个服务器上的内存空间不足,不能用来一次性解压很多数据
3. 使用python编写,刚开始对python不熟悉
4. 时间按照秒转化的,数据库中是按照毫秒存储
5. 日志按照月份、日期排序,存在部分日期的日志不存在和数据存储在不同位置的情况
三、处理
1. 使用python在线上处理,不必转移到线下。
2. 按照月份进行解压,避免了不同月份日期不同的现象,逐月解压避免了内部存储空间不足的问题
3. 采用正则表达式匹配数据
4. 在load数据时,采用set关键字解决了时间毫秒存储的问题
5. 部分日期日志不存在和数据存储在不同位置的问题,程序检测到某个日期的日志不存在就会停止,数据存储在不同的位置则要将其移动到统一的解压位置。
四、优化
1. 提升处理时间
将每处理一个新文件打开一次write.txt,改为只打开一次待所有文件处理完再关闭。
将每处理一条数据写一次,改为将所有数据存储在一个字符串里,一次写入。