- 论坛徽章:
- 0
|
题外话, 今天用常规方法处理了一个非常大的数据,结果下场很惨, 并且还在经历中, 另外题外话,上次的奖品没人要么 ?
需求说明
背景说明:
目录下有上万个固定格式的文件, 每个文件行数可能在10000左右,文件内的格式也是固定的
<服务器> <服务类型> <记录索引> <客户名> <客户特征码> <记录时间> <服务计费1> <服务计费2> <收费合同>;
例如
server3 2 1863501573 19861416d953515f 460016956902024f 1412032028222b0800 133 129 6 ;
通常要做基于前几项做计费统计:
比如基于单个客户的计费总和统计表,<客户名> sum( <服务计费1> + <服务计费2> )
基于服务类型的计费统计表, <服务类型> sum( <服务计费1> + <服务计费2> )
基于客户+服务类型的交叉统计表 <客户名>&<服务类型> sum( <服务计费1> + <服务计费2> )
需求:
1, 参数作为变量输入,文件名只是模糊拼配,假如我们的脚本名字叫SerCout.py
我希望输入的时候这样:
./Sercout.py ./UUserver.*.txt -n 4 -sum 7,8 //4, 7, 8 都是列
从而得到一个明明为index_4_sum_7_8.txt的文件, 里面实现了基于单个客户的计费总和统计表
2, 主动分拆目录,递归计算加合
我通常处理的时候都是将所有小文件合并,然后在写定文件名再处理
这样浪费了一次合并的时间,还只能一个进程/线程处理数据
./SerCout.py ./UUserver.*.txt -p 100 -n 4 -sum 7,8
加一个-P参数,加入我有1000个文件, 加-p参数之后,脚本先遍历得到所有匹配的文件名,然后将文件分成100份, 每份10个文件
然后将100个统计结果再做一次加合,最后依然是得到index_4_sum_7_8.txt
关键想在这里得到并行处理的优势
cpu 内存 足够
代码最好是py2.6
伪代码也成,主要探讨实现
|
|