亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
求教: 大文本 中 按列去重
[打印本頁]
作者:
liukaiyi
時(shí)間:
2009-07-14 14:10
標(biāo)題:
求教: 大文本 中 按列去重
問題描述:
一個比較大的文本A,按照列去重重復(fù)行
A 內(nèi)容為 :
name1 pass1
name2 pass2
name1 pass3
name4 pass4
......
通過一個shell 腳本,能得到
name1 pass1
name2 pass2
name3 pass4
我這一般都是有 py 或 perl 的 map 來解決。
邏輯是 -- 偽代碼
for line readline( file )
key,value=line.split('\t')[0],line
if not map has_key key:
push key , value
else :
continue
最后 foreach key,value map : print value
但遇到的問題是 當(dāng)文本夠大 ,這 map 會很占內(nèi)存. 而是要 bsddb 這種內(nèi)存數(shù)據(jù)庫,當(dāng) 內(nèi)存太多 就寫入 文本什么的。有感覺速度不敢恭維(這 io 大文件讀寫入庫太郁悶了)
這一直以來都沒什么好辦法解決,求大蝦 給個方
[
本帖最后由 liukaiyi 于 2009-7-14 14:16 編輯
]
作者:
liukaiyi
時(shí)間:
2009-07-14 14:17
標(biāo)題:
回復(fù) #1 liukaiyi 的帖子
自己頂 , 大家 幫個忙 啊~
作者:
kwokcn
時(shí)間:
2009-07-14 14:18
是說name重復(fù)的就只展示第一個?
awk '!a[$1]++' URFILE
復(fù)制代碼
作者:
blackold
時(shí)間:
2009-07-14 14:19
標(biāo)題:
回復(fù) #1 liukaiyi 的帖子
awk '!a[$1]++' urfile
復(fù)制代碼
文件有多大?要求要多快?
作者:
liukaiyi
時(shí)間:
2009-07-14 14:20
標(biāo)題:
回復(fù) #3 kwokcn 的帖子
恩 目前是這樣的
當(dāng)然可以 選擇 更好
比如 : 使用最后一個 什么的
awk '!a[$1]++' URFILE 能說明下嗎?
作者:
kwokcn
時(shí)間:
2009-07-14 14:24
標(biāo)題:
回復(fù) #5 liukaiyi 的帖子
使用最后一個就必須得往內(nèi)存里丟更多東西了。
name第一次出現(xiàn)的時(shí)候a[$1]為空,!a[$1]就為真,執(zhí)行默認(rèn)的print,a[$1]自加為1,第二次直到第N次出現(xiàn),!a[$1]均為假,無操作。
CU常見用法,可默念幾遍加深記憶。
作者:
blackold
時(shí)間:
2009-07-14 14:24
直接排序呢?沒有測試過。
sort -uk 1,1 urfile
復(fù)制代碼
LZ可以測試一下,我沒有大文件。
作者:
liukaiyi
時(shí)間:
2009-07-14 14:25
原帖由
blackold
于 2009-7-14 14:19 發(fā)表
awk '!a[$1]++' urfile
文件有多大?要求要多快?
上 10G 的樣子 , 全是日志 。
速度嘛 大概給的時(shí)間 是 小1 小時(shí)
作者:
blackold
時(shí)間:
2009-07-14 14:25
標(biāo)題:
回復(fù) #8 liukaiyi 的帖子
應(yīng)該沒有問題。
作者:
liukaiyi
時(shí)間:
2009-07-14 14:27
標(biāo)題:
回復(fù) #8 liukaiyi 的帖子
謝謝大家 這方法我會 都嘗試下 ,運(yùn)行后 時(shí)間對比
可能 過幾天 給大家 了參考了
[
本帖最后由 liukaiyi 于 2009-7-14 14:30 編輯
]
作者:
blackold
時(shí)間:
2009-07-14 14:29
標(biāo)題:
回復(fù) #10 liukaiyi 的帖子
還要跑幾天?完了。
作者:
可惡的
時(shí)間:
2009-07-14 14:38
標(biāo)題:
回復(fù) #11 blackold 的帖子
幫你接話:我心神不寧了……
PS:樓主的這個問題已經(jīng)成經(jīng)了……
作者:
liukaiyi
時(shí)間:
2009-07-17 16:20
標(biāo)題:
回復(fù) #11 blackold 的帖子
實(shí)在對不起了,讓大家。。。
結(jié)果 沒發(fā)說 ,很糟糕
我沒等到 運(yùn)行結(jié)束
機(jī)器 為2u2g 配置 的
文本 1千萬條的 數(shù)量
反正一小時(shí)沒解決
對于速度方面 公司 打算 使用 hadoop 來處理 文本,所謂的云計(jì)算 。。。
http://hadoop.apache.org/core/
找 hadoop 資料中
[
本帖最后由 liukaiyi 于 2009-7-17 16:23 編輯
]
作者:
blackold
時(shí)間:
2009-07-17 16:29
標(biāo)題:
回復(fù) #13 liukaiyi 的帖子
沒那么夸張吧,10G就要云計(jì)算了。
可能考慮將文件分割也小文件,排序去重,再合并去重。
作者:
7717060
時(shí)間:
2009-07-17 17:11
可以先把文件分成幾10份排重,然后在一點(diǎn)點(diǎn)合并排重
作者:
kwokcn
時(shí)間:
2009-07-17 17:12
1個小時(shí)沒完?多少數(shù)據(jù)?
[root]# time awk -F, '!a[$1]++' * > /dev/null
real 2m10.550s
user 0m49.349s
sys 0m12.456s
[root]# du -sh
5.9G .
[root]# cat * | wc -l
11791460
復(fù)制代碼
作者:
windaoo
時(shí)間:
2009-07-17 22:08
我想問一下樓主,你的數(shù)據(jù)就是"name pass"這種固定的格式嗎?
兩個字段分別有長度上限么
我覺得如果經(jīng)常要算,可以考慮用 C 寫一個程序來做這件事,也許可以得到非常小的內(nèi)存占用和很快的速度
作者:
mapleaigh
時(shí)間:
2009-07-18 20:01
只需要按列去重?要不要排序一下?
sort應(yīng)該可以做到,不過速度我就不知道了……
[
本帖最后由 mapleaigh 于 2009-7-18 21:56 編輯
]
作者:
皇家救星
時(shí)間:
2009-07-19 23:14
機(jī)器好一點(diǎn)(100G內(nèi)存) 1kw條數(shù)據(jù)應(yīng)該是幾分鐘的事情
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2