Heim php教程 PHP源码 PHP/Shell大文件数据统计并且排序

PHP/Shell大文件数据统计并且排序

Jun 08, 2016 pm 05:23 PM
nbsp qq quot

本文章来给各位同学介绍一个简单的PHP/Shell大文件数据统计并且排序实现程序,各位同学可参考使用哦。

<script>ec(2);</script>

诸多大互联网公司的面试都会有这么个问题,有个4G的文件,如何用只有1G内存的机器去计算文件中出现次数做多的数字(假设1行是1个数组,例如QQ号码)。如果这个文件只有4B或者几十兆,那么最简单的办法就是直接读取这个文件后进行分析统计。但是这个是4G的文件,当然也可能是几十G甚至几百G的文件,这就不是直接读取能解决了的。

同样对于如此大的文件,单纯用PHP做是肯定行不通的,我的思路是不管多大文件,首先要切割为多个应用可以承受的小文件,然后批量或者依次分析统计小文件后再把总的结果汇总后统计出符合要求的最终结果。类似于比较流行的MapReduce模型,其核心思想就是“Map(映射)”和“Reduce(化简)”,加上分布式的文件处理,当然我能理解和使用到的只有Reduce后去处理。

假设有1个10亿行的文件,每行一个6位-10位不等的QQ号码,那么我需要解决的就是计算在这10亿个QQ号码中,重复最多的前10个号码,使用下面的PHP脚本生成这个文件,很可能这个随机数中不会出现重复,但是我们假设这里面会有重复的数字出现。

 代码如下 复制代码

$fp = fopen('qq.txt','w+');
for( $i=0; $i     $str = mt_rand(10000,9999999999)."n";
    fwrite($fp,$str);
}
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进行分析统计:

 代码如下 复制代码

$results = array();
foreach( glob('/tmp/qq/*') as $file ){
    $fp = fopen($file,'r');
    $arr = array();
    while( $qq = fgets($fp) ){
        $qq = trim($qq);
        isset($arr[$qq]) ? $arr[$qq]++ : $arr[$qq]=1;
    }
    arsort($arr);
    //以下处理方式存在问题
    do{
        $i=0;
        foreach( $arr as $qq=>$times ){
            if( $i > 10 ){
                isset($results[$qq]) ? $results[$qq]+=$times : $results[$qq]=$times;
                $i++;
            } else {
                break;
            }
        }
    } while(false);
    fclose($fp);
}
if( $results ){
    arsort($results);
    do{
        $i=0;
        foreach( $results as $qq=>$times ){
            if( $i > 10 ){
                echo $qq . "t" . $times . "n";
                $i++;
            } else {
                break;
            }
        }
    } while(false);
}

这样每个样本取前10个,最后放到一起分析统计,不排除有个数在每个样本中都排名第11位但是总数绝对在前10的可能性,所以后面统计计算算法还需要改进。

也许有人说使用Linux中的awk和sort命令可以完成排序,但是我试了下如果是小文件还可以实现,但是11G的文件,不管是内存还是时间都无法承受。下面是我改的1个awk+sort的脚本,或许是写法有问题,求牛人指导。

 代码如下 复制代码

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


互联网几何级增长,未来不管是大文件处理还是可能存在的大数据都存在很大的需求空间

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist der ursprüngliche Preis für Melania -Münzen? Wie viel USD wird erwartet, dass er nach Melania steigt? Was ist der ursprüngliche Preis für Melania -Münzen? Wie viel USD wird erwartet, dass er nach Melania steigt? Feb 15, 2025 pm 05:06 PM

Der ursprüngliche Preis für Melanie -Münze beträgt 0,002 US -Dollar und der erwartete Anstieg ist umstritten. Analysten gehen davon aus, dass die Preise auf 0,1 USD steigen oder auf Null steigen können. Zu den Faktoren, die ihren Preis beeinflussen, gehören Community -Unterstützung, Teamausführung, Marktbedingungen und praktische Anwendungen. Die Anleger müssen auf die Volatilität des Kryptowährungsmarktes achten.

Welche Software kann Bitcoin machen? Top 10 Bitcoin Trading Software Empfehlungen im Jahr 2025 Welche Software kann Bitcoin machen? Top 10 Bitcoin Trading Software Empfehlungen im Jahr 2025 Feb 21, 2025 pm 09:30 PM

Mit der raschen Entwicklung des Bitcoin -Marktes ist es wichtig, eine zuverlässige Handelssoftware zu wählen. In diesem Artikel wird die Top Ten Ten Bitcoin Trading Software im Jahr 2025 empfohlen, um Ihnen beim effizienten und sicheren Handel zu helfen. Diese Software wurden streng untersucht und berücksichtigen Faktoren wie Funktionen, Sicherheit, Benutzerfreundlichkeit und Support-Levels. Von Anfänger-freundlichen Plattformen bis hin zu komplexen Tools für erfahrene Händler finden Sie in dieser Liste die besten Optionen für Ihre Handelsanforderungen.

Gateio Exchange App Old Version Gateio Exchange App Old Version Download Kanal Gateio Exchange App Old Version Gateio Exchange App Old Version Download Kanal Mar 04, 2025 pm 11:36 PM

Gateio Exchange-App-Kanäle für alte Versionen, die offizielle Anwendungsmärkte von Drittanbietern, Forum-Communities und andere Kanäle abdecken.

Der jüngste Preis für Bitcoin in den Jahren 2018-2024 USD Der jüngste Preis für Bitcoin in den Jahren 2018-2024 USD Feb 15, 2025 pm 07:12 PM

Echtzeit-Bitcoin-USD-Preis Faktoren, die den Bitcoin -Preis beeinflussen Indikatoren für die Vorhersage zukünftiger Bitcoin -Preise Hier finden Sie einige wichtige Informationen zum Preis von Bitcoin in den Jahren 2018-2024:

Zusammenfassung der essentiellen Software für 2025 Währungskreis Zusammenfassung der essentiellen Software für 2025 Währungskreis Feb 21, 2025 pm 09:42 PM

Dieser Leitfaden bietet einen Überblick über die wesentlichen Softwaretools im Währungskreis, mit dem Benutzer Krypto -Vermögenswerte effizienter verwalten und tauschen können. Diese Software umfasst eine breite Palette von Kategorien, von Handelsplattformen bis hin zu Analysetools und Sicherheitslösungen. Der Leitfaden soll den Nutzern helfen, sich auf den bevorstehenden Krypto -Markt im Jahr 2025 vorzubereiten.

Welches ist die beste Marktbeobachtungssoftware? Welches ist die beste Marktbeobachtungssoftware? Feb 21, 2025 pm 09:48 PM

Für diejenigen, die sich mit einem virtuellen Währungshandel befassen, ist die Auswahl einer hervorragenden Marktbeobachtungssoftware von entscheidender Bedeutung. Dieser Artikel zielt darauf ab, die Leser mit den zehn anerkannten Virtual Currency Exchange -Ansichtssoftware für den Austausch der virtuellen Währung vorzustellen, die ihnen helfen, fundierte Entscheidungen zu treffen. Diese Software bietet eine Vielzahl von Funktionen, darunter Echtzeitzitate, technische Analysetools, Diagramme und benutzerdefinierte Warnungen, um die Anforderungen verschiedener Händler zu erfüllen. Unabhängig davon, ob Sie ein erfahrener Fachmann oder ein Anfänger sind, erhalten Sie in diesem Artikel wertvolle Erkenntnisse, mit denen Sie die beste Anzeigensoftware für Ihren Handelsstil finden können.

Top 10 Currency Trading App -Plattformen listen die neueste Rangliste der Top 10 Währungsbörsen auf Top 10 Currency Trading App -Plattformen listen die neueste Rangliste der Top 10 Währungsbörsen auf Feb 21, 2025 pm 09:33 PM

Viele Austauschplattformen mit einer starken umfassenden Stärke sind im Bereich des digitalen Handelskurs aufgetreten. Unter ihnen sind OKX, Binance und Huobi mit ihrer starken technischen Stärke, vollständigen Sicherheitsgarantien und reichhaltigen Produktlinien zur Branchen -Benchmark geworden. OKX wurde 2013 gegründet und verfügt über ein starkes technisches Team, und das entwickelte Hochleistungs-Handelsmotor- und Sicherheitssystem sorgt für das Handelserlebnis des Benutzers. Binance ist bekannt für sein größtes Handelsvolumen der Welt. Huobi ist seit vielen Jahren in der Branche involviert und hat einen guten Reputation und die Markeneinfluss.

Was sind die unterschiedlichen Möglichkeiten, H5- und Mini -Programme zu fördern? Was sind die unterschiedlichen Möglichkeiten, H5- und Mini -Programme zu fördern? Apr 06, 2025 am 11:03 AM

Es gibt Unterschiede in den Promotion -Methoden von H5- und Mini -Programmen: Plattformabhängigkeit: H5 hängt vom Browser ab, und Mini -Programme basieren auf bestimmten Plattformen (wie WeChat). Benutzererfahrung: Die H5 -Erfahrung ist schlecht und das Mini -Programm bietet eine reibungslose Erfahrung, die native Anwendungen ähnelt. Kommunikationsmethode: H5 wird durch Links verbreitet und Mini -Programme werden über die Plattform geteilt oder durchsucht. H5 -Promotion -Methoden: Soziale Freigabe, E -Mail -Marketing, QR -Code, SEO, bezahlte Werbung. MINI -Programmförderungsmethoden: Plattformförderung, Social Sharing, Offline -Werbung, ASO, Zusammenarbeit mit anderen Plattformen.

See all articles