免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1581 | 回复: 0
打印 上一主题 下一主题

小文件大数据统计处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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

伪代码也成,主要探讨实现
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP