KoomIer 发表于 2014-12-16 13:51

小文件大数据统计处理

题外话, 今天用常规方法处理了一个非常大的数据,结果下场很惨, 并且还在经历中, 另外题外话,上次的奖品没人要么 ?

需求说明
背景说明:
目录下有上万个固定格式的文件, 每个文件行数可能在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

伪代码也成,主要探讨实现
页: [1]
查看完整版本: 小文件大数据统计处理