Chinaunix

标题: shell(sed、awk)处理大数据的文件 [打印本页]

作者: chenbin200818    时间: 2011-02-22 09:53
标题: shell(sed、awk)处理大数据的文件
几个T的数据 只有一列(该列数据不超过30个字符)  问题: 求出 该列中出现次数最多的10个数据,并排序

要求:
只用shell脚本(包括awk、sed)
要有很高的时间效率
作者: lkk2003rty    时间: 2011-02-22 09:58
几个T估计怎么写都不会快。。。。。
作者: chenbin200818    时间: 2011-02-22 10:00
如果原来需要2天能处理完, 现在需1天 这也叫效率
作者: wtuter    时间: 2011-02-22 10:05
回复 1# chenbin200818


    你的磁盘真够大
作者: chenbin200818    时间: 2011-02-22 10:28
是服务器处理 有高手解答吗
作者: lkk2003rty    时间: 2011-02-22 10:36
导入数据库然后写sql。。。。。

作者: chenbin200818    时间: 2011-02-22 10:37
请用shell来解答
作者: cjaizss    时间: 2011-02-22 10:44
这个可能是"大工程"啊.
你估计大概有多少个不同的数据?
作者: cjaizss    时间: 2011-02-22 10:52
这个可能是"大工程"啊.
你估计大概有多少个不同的数据?
cjaizss 发表于 2011-02-22 10:44



    但这样的统计用hashtable是应该的.
   你试试awk里的hashtable可以不可以解决你的问题,只是建议.如果不同数据太多,可能导致很慢.
作者: chenbin200818    时间: 2011-02-22 15:35
都没有什么意见吗
如果 文件大小改成 10G 有人有答案吗
作者: yinyuemi    时间: 2011-02-22 15:50
你的问题是数据太大,
下面的代码应该能满足你要求,不过这么大的数据awk处理起来,不知情况会如何,

awk '{a[$0]++}END{for (i in a) print a[i],i|"sort -nr|head"}'
作者: compare2000    时间: 2011-02-22 15:59
你的问题是数据太大,
下面的代码应该能满足你要求,不过这么大的数据awk处理起来,不知情况会如何,

a ...
yinyuemi 发表于 2011-02-22 15:50



    很慢的。
   记得以前用了一上午的时间拷贝无序的500G测试数据文件,脚本跑了老长。
作者: fllintel    时间: 2011-02-22 17:07
只用shell 不管怎么写都不会快啊, 可以用hadoop 来做 但那不是shell......
作者: chenbin200818    时间: 2011-02-22 17:26
11楼 如果是小数据 可以;
可如果向你这样, 你考虑过 数祖边界吗
作者: kelehaier    时间: 2011-02-22 17:28
  1. sort file | uniq -c | sort -k1rn | head -10 | awk '{print $2;}'
复制代码
试试看




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2