亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2213 | 回復(fù): 2
打印 上一主題 下一主題

Tie::File處理大文件問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2016-07-02 10:16 |只看該作者 |倒序瀏覽
本帖最后由 linewer 于 2016-07-02 10:17 編輯

近3T的大文件(大概2195822197行),每行一條記錄, 想查找符合某條件的行,
在一臺Intel(R) Xeon(R) CPU E5-2609 v3 1.90GHz , 64GB內(nèi)存的服務(wù)器上,跑了大半天,最后直接內(nèi)存溢出了;  最后測試了下grep直接查找,大半天最后出來結(jié)果了....
如下程序有啥問題么,或者對于這么大文件用perl處理有啥建議么
  1. #!/usr/bin/env perl
  2. use Tie::File;

  3. open( $fn, '>', './line-number.log') or die "Could not open file";
  4. open( $fm, '>', './tie-result.log') or die "Could not open file";
  5. tie @array, 'Tie::File', './myresult.json' or die "File error\n";
  6. $min=1464537601000-900;
  7. $max=1466783999000;
  8. for ($n=2195822197;$n>=0;$n--)   #只知道大概在文件中下部的樣子,具體不知道哪一行,采用從后往前查找匹配
  9. {
  10.   my $tmp=$array[$n];
  11.   if( $tmp =~ /"Time":"(.*?)",.*"time":"2016-0[5-6].*?","SerialNumber":"123456790abcd"/)
  12.   {
  13.     if ( $1 >= $min  && $1 <= $max)
  14.     {
  15.        print $fn "$n\n";
  16.        print $fm "$tmp\n";
  17.     }
  18.     if( $1 < $min)
  19.     {
  20.        last;
  21.     }
  22.   }
  23. }

  24. close($fn);
  25. close($fm);
復(fù)制代碼

求職 : 軟件工程師
論壇徽章:
3
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-07 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-12-13 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-05-05 06:20:00
2 [報告]
發(fā)表于 2016-07-02 12:49 |只看該作者
這么大的文件用 Tie:: 模塊,這個模塊會把文件盡可能的裝到內(nèi)存里。既然是遍歷,就用文件句柄,逐行遍歷就好了。

不過這么大的文件不放在數(shù)據(jù)庫里,一行一行的找太費時間。不如一次放在數(shù)據(jù)庫里,省的下次麻煩。

或者用多線程語言,把文件分成多個部分,分別去找,會快很多。

論壇徽章:
0
3 [報告]
發(fā)表于 2016-07-02 15:32 |只看該作者
回復(fù) 2# 104359176
本來是DB里,因為臨時整改調(diào)整,以前知道Tie并簡單用過,這次想試試處理這么大文件是什么效率,結(jié)果大失所望...


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP