Maison 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


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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel logiciel peut faire du bitcoin? Top 10 des recommandations de logiciels de trading Bitcoin en 2025 Quel logiciel peut faire du bitcoin? Top 10 des recommandations de logiciels de trading Bitcoin en 2025 Feb 21, 2025 pm 09:30 PM

Avec le développement rapide du marché du bitcoin, il est crucial de choisir des logiciels de trading fiables. Cet article recommandera les dix meilleurs logiciels de trading Bitcoin en 2025 pour vous aider à négocier efficacement et en toute sécurité. Ces logiciels ont été rigoureusement examinés et examinent des facteurs tels que les fonctionnalités, la sécurité, la convivialité et les niveaux de soutien. Des plates-formes adaptées aux débutants aux outils complexes pour les commerçants expérimentés, vous trouverez les meilleures options pour vos besoins commerciaux dans cette liste.

Résumé du logiciel essentiel pour le cercle de devises 2025 Résumé du logiciel essentiel pour le cercle de devises 2025 Feb 21, 2025 pm 09:42 PM

Ce guide fournit un aperçu des outils logiciels essentiels dans le cercle des devises qui aident les utilisateurs à gérer et à échanger plus efficacement les actifs cryptographiques. Ces logiciels couvrent un large éventail de catégories, des plateformes de trading aux outils analytiques et aux solutions de sécurité. Le guide est conçu pour aider les utilisateurs à se préparer au prochain marché de la cryptographie en 2025.

Application Gateio Exchange Ancienne version GATEIO Exchange App Old Version Télécharger la chaîne de téléchargement Application Gateio Exchange Ancienne version GATEIO Exchange App Old Version Télécharger la chaîne de téléchargement Mar 04, 2025 pm 11:36 PM

Les canaux de téléchargement de l'application GATEIO Exchange pour les anciennes versions, couvrant les marchés d'applications officiels, tiers, les communautés de forum et d'autres canaux.

Le dernier prix du bitcoin en 2018-2024 USD Le dernier prix du bitcoin en 2018-2024 USD Feb 15, 2025 pm 07:12 PM

Prix ​​USD Bitcoin en temps réel Facteurs qui affectent le prix du bitcoin Indicateurs pour prédire les prix des futurs bitcoins Voici quelques informations clés sur le prix du bitcoin en 2018-2024:

Quel est le meilleur logiciel de visualisation du marché? Quel est le meilleur logiciel de visualisation du marché? Feb 21, 2025 pm 09:48 PM

Pour ceux qui sont engagés dans le trading de devises virtuels, le choix d'un excellent logiciel de visualisation du marché est crucial. Cet article vise à présenter les lecteurs aux dix logiciels de visualisation de devises virtuels les plus acclamés pour les aider à faire des choix éclairés. Ces logiciels offrent une variété de fonctionnalités, notamment des devis en temps réel, des outils d'analyse technique, des graphiques et des alertes personnalisées pour répondre aux besoins des différents commerçants. Que vous soyez un professionnel expérimenté ou un débutant, cet article vous fournira des informations précieuses pour vous aider à trouver le meilleur logiciel de visualisation pour votre style de trading.

Quelles sont les différentes façons de promouvoir les programmes H5 et Mini? Quelles sont les différentes façons de promouvoir les programmes H5 et Mini? Apr 06, 2025 am 11:03 AM

Il existe des différences dans les méthodes de promotion des programmes H5 et MINI: la dépendance à la plate-forme: H5 dépend du navigateur, et les programmes mini reposent sur des plateformes spécifiques (telles que WeChat). Expérience utilisateur: L'expérience H5 est médiocre et le programme MINI offre une expérience fluide similaire aux applications natives. Méthode de communication: H5 se propage via des liens et les mini programmes sont partagés ou recherchés via la plate-forme. H5 Méthodes de promotion: partage social, marketing par e-mail, code QR, référencement, publicité payante. Mini méthodes de promotion du programme: Promotion de la plate-forme, partage social, promotion hors ligne, ASO, coopération avec d'autres plateformes.

OUYI OFFICIEL ENTRÉE DE CONNECTION 2025 OUYI OKX TRADING Plateforme Version officielle Entrée OUYI OFFICIEL ENTRÉE DE CONNECTION 2025 OUYI OKX TRADING Plateforme Version officielle Entrée Feb 15, 2025 pm 07:15 PM

Comprenez pleinement l'entrée officielle de l'Ouyi Okx Trading Plateforme Surveillance en temps réel de l'utilisation de la plate-forme de trading OKI Discussion approfondie sur la garantie de sécurité et le plan de développement de la plate-forme de trading OUYI OKX

Les 10 principales plates-formes d'applications de trading de devises répertorient le dernier classement des 10 premiers échanges de devises Les 10 principales plates-formes d'applications de trading de devises répertorient le dernier classement des 10 premiers échanges de devises Feb 21, 2025 pm 09:33 PM

De nombreuses plateformes d'échange avec une forte force complète ont émergé dans le domaine du trading d'actifs numériques. Parmi eux, Okx, Binance et Huobi sont devenus la référence de l'industrie avec leur forte force technique, leurs garanties de sécurité complètes et leurs riches gammes de produits. Créée en 2013, OKX possède une solide équipe technique et le moteur de trading et le système de sécurité développés développés assurent l'expérience de trading de l'utilisateur. Binance est connue pour son plus grand volume commercial au monde. Huobi est profondément impliqué dans l'industrie depuis de nombreuses années et a une bonne réputation de l'utilisateur et une influence de la marque.

See all articles