亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP/Shell大文件數據統計并且排序

2024-05-04 21:48:04
字體:
來源:轉載
供稿:網友

諸多大互聯網公司的面試都會有這么個問題,有個4G的文件,如何用只有1G內存的機器去計算文件中出現次數做多的數字(假設1行是1個數組,例如QQ號碼),如果這個文件只有4B或者幾十兆,那么最簡單的辦法就是直接讀取這個文件后進行分析統計,但是這個是4G的文件,當然也可能是幾十G甚至幾百G的文件,這就不是直接讀取能解決了的.

同樣對于如此大的文件,單純用PHP做是肯定行不通的,我的思路是不管多大文件,首先要切割為多個應用可以承受的小文件,然后批量或者依次分析統計小文件后再把總的結果匯總后統計出符合要求的最終結果,類似于比較流行的MapReduce模型,其核心思想就是“Map(映射)”和“Reduce(化簡)”,加上分布式的文件處理,當然我能理解和使用到的只有Reduce后去處理.

假設有1個10億行的文件,每行一個6位-10位不等的QQ號碼,那么我需要解決的就是計算在這10億個QQ號碼中,重復最多的前10個號碼,使用下面的PHP腳本生成這個文件,很可能這個隨機數中不會出現重復,但是我們假設這里面會有重復的數字出現,代碼如下:

  1. $fp = fopen('qq.txt','w+'); 
  2. for$i=0; $i<1000000000; $i++ ){ 
  3.     $str = mt_rand(10000,9999999999)."n"
  4.     fwrite($fp,$str); 
  5. fclose($fp); 

生成文件的世界比較長,Linux下直接使用php-client運行PHP文件會比較節省時間,當然也可以使用其他方式生成文件,生成的文件大約11G,然后使用Linux Split切割文件,切割標準為每100萬行數據1個文件,代碼如下:

split -l 1000000 -a 3 qq.txt qqfile  

qq.txt被分割為名字是qqfileaaa到qqfilebml的1000個文件,每個文件11mb大小,這時再使用任何處理方法都會比較簡單了,我還是使用PHP進行分析統計,代碼如下:

  1. $results = array(); 
  2. foreachglob('/tmp/qq/*'as $file ){ 
  3.     $fp = fopen($file,'r'); 
  4.     $arr = array(); 
  5.     while$qq = fgets($fp) ){ 
  6.         $qq = trim($qq); 
  7.         isset($arr[$qq]) ? $arr[$qq]++ : $arr[$qq]=1; 
  8.     } 
  9.     arsort($arr); 
  10.     //以下處理方式存在問題 
  11.     do
  12.         $i=0; 
  13.         foreach$arr as $qq=>$times ){ 
  14.             if$i > 10 ){ 
  15.                 isset($results[$qq]) ? $results[$qq]+=$times : $results[$qq]=$times
  16.                 $i++; 
  17.             } else { 
  18.                 break
  19.             } 
  20.         } 
  21.     } while(false); 
  22.     fclose($fp);  
  23. if$results ){ 
  24.     arsort($results); 
  25.     do
  26.         $i=0; 
  27.         foreach$results as $qq=>$times ){ 
  28.             if$i > 10 ){ 
  29.                 echo $qq . "t" . $times . "n"
  30.                 $i++; 
  31.             } else { 
  32.                 break
  33.             } 
  34.         } 
  35.     } while(false); 

這樣每個樣本取前10個,最后放到一起分析統計,不排除有個數在每個樣本中都排名第11位但是總數絕對在前10的可能性,所以后面統計計算算法還需要改進.

也許有人說使用Linux中的awk和sort命令可以完成排序,但是我試了下如果是小文件還可以實現,但是11G的文件,不管是內存還是時間都無法承受,下面是我改的1個awk+sort的腳本,或許是寫法有問題,求牛人指導,代碼如下:

  1. awk -F '/@' '{name[$1]++ } END {for (count in name) print name[count],count}' qq.txt |sort -n > 123.txt 

互聯網幾何級增長,未來不管是大文件處理還是可能存在的大數據都存在很大的需求空間.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人黑人xx视频免费观看| 在线电影av不卡网址| 国产精品久久久久久久av大片| 成人伊人精品色xxxx视频| 91精品视频在线| 亚洲大胆人体av| 米奇精品一区二区三区在线观看| 精品亚洲va在线va天堂资源站| 91高清在线免费观看| 色噜噜狠狠色综合网图区| 亚洲伊人久久大香线蕉av| 日韩高清a**址| 2019中文字幕全在线观看| 精品久久久久久中文字幕一区奶水| 日韩二区三区在线| 一区二区欧美亚洲| 国产精品久久久久久av| 91中文在线观看| 久久精品国产一区二区电影| 日韩欧美精品中文字幕| 欧美大尺度激情区在线播放| 日本成人在线视频网址| 色婷婷久久一区二区| 欧美中文字幕第一页| 深夜福利亚洲导航| 91精品国产色综合| 日本高清视频一区| 国产91ⅴ在线精品免费观看| 国产成人精品久久亚洲高清不卡| 亚洲国产精品一区二区久| 日韩欧美第一页| 91在线免费网站| 精品在线观看国产| 自拍偷拍亚洲区| 日韩视频在线免费观看| 成人情趣片在线观看免费| 91精品综合久久久久久五月天| 国产欧美精品va在线观看| 亚洲男子天堂网| 日韩av色在线| 国内外成人免费激情在线视频网站| 国产成人精品免费视频| 欧美在线观看网站| 国产91热爆ts人妖在线| 日韩美女在线观看| 日韩国产欧美精品一区二区三区| 中文字幕久久精品| 亚洲第一免费网站| 精品国产视频在线| 欧美一级视频免费在线观看| 91香蕉嫩草神马影院在线观看| 精品国产91久久久久久| 岛国av一区二区三区| 亚洲人午夜精品免费| 91在线直播亚洲| 国产不卡av在线| 亚洲美女中文字幕| 亚洲影院在线看| 92裸体在线视频网站| 欧美富婆性猛交| 成人羞羞国产免费| 4438全国成人免费| 亚洲欧洲一区二区三区在线观看| 欧美一区视频在线| 国产精品高潮呻吟久久av黑人| www.99久久热国产日韩欧美.com| 国产精品久久久久av免费| 久久久精品久久久久| 欧美国产日韩一区| 成人激情视频小说免费下载| 精品一区二区三区四区在线| 国产97色在线|日韩| x99av成人免费| 欧美精品在线免费观看| 96pao国产成视频永久免费| 日韩成人在线视频| 亚洲在线观看视频| 国产亚洲激情在线| 热re99久久精品国产66热| 欧美国产日韩一区二区| 欧美一级片免费在线| 伊人久久精品视频| 国产99在线|中文| 日韩欧美成人精品| 国产亚洲欧洲在线| 精品国产一区二区在线| 萌白酱国产一区二区| 国产精品一久久香蕉国产线看观看| 欧美一区深夜视频| 成人在线观看视频网站| 久久伊人免费视频| 久久精品国产69国产精品亚洲| 日韩欧美国产中文字幕| 国产成人精品日本亚洲| 亚洲a级在线观看| 日韩高清电影免费观看完整| 韩剧1988在线观看免费完整版| 国产精品专区h在线观看| 狠狠躁夜夜躁久久躁别揉| …久久精品99久久香蕉国产| 精品久久久久久亚洲精品| 亚洲欧美日韩精品久久| 91精品免费视频| 国产日韩欧美日韩大片| 久久国产视频网站| 奇米影视亚洲狠狠色| 国产日本欧美一区| 午夜精品久久久久久99热软件| 欧美日韩在线观看视频| 国产精品视频网站| 亚洲精品久久久久久久久久久久久| 国产精品电影网| 欧美成人精品在线播放| 国产91在线高潮白浆在线观看| 欧美一区二区三区图| 欧美性视频网站| 国产精品久久9| 96精品视频在线| 欧美一区二区视频97| 欧美一区二区三区图| 国产精品成人久久久久| 亚洲三级 欧美三级| 色悠悠久久久久| 97精品视频在线播放| 隔壁老王国产在线精品| 欧美二区乱c黑人| 精品夜色国产国偷在线| 91欧美日韩一区| 欧美国产日韩一区二区三区| 一区二区三区精品99久久| 久久天堂电影网| 亚洲成人av片在线观看| 久久这里只有精品视频首页| 26uuu亚洲伊人春色| 国产欧美在线视频| 亚洲男女性事视频| 久久久久女教师免费一区| 国产亚洲精品久久久久久| 92福利视频午夜1000合集在线观看| 日韩网站免费观看高清| 伦伦影院午夜日韩欧美限制| 国产在线精品成人一区二区三区| 国产精品美女网站| 色香阁99久久精品久久久| 久久久亚洲天堂| 日韩av综合网站| 国产一区二区日韩精品欧美精品| 久久艳片www.17c.com| 国产在线视频91| 九九久久精品一区| 亚洲成人亚洲激情| 久久久之久亚州精品露出| 91av在线网站| 欧美性猛交xxxx免费看漫画| 一本久久综合亚洲鲁鲁| 91在线免费视频| 亚洲天堂男人的天堂| 久久久精品免费视频| 欧美黑人xxxx| 美女视频久久黄| 97在线视频免费看| 91精品国产高清久久久久久| 日韩有码在线观看| 久久精品国产一区二区三区|