PHP/Shell大文件数据统计并且排序
本文章来给各位同学介绍一个简单的PHP/Shell大文件数据统计并且排序实现程序,各位同学可参考使用哦。
诸多大互联网公司的面试都会有这么个问题,有个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+'); |
生成文件的世界比较长,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(); |
这样每个样本取前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 |
互联网几何级增长,未来不管是大文件处理还是可能存在的大数据都存在很大的需求空间

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

随着比特币市场的快速发展,选择可靠的交易软件至关重要。本文将为您推荐 2025 年排名前十的比特币交易软件,帮助您高效、安全地进行交易。这些软件经过严格的筛选,考虑了功能、安全性、用户友好性和支持水平等因素。从初学者友好的平台到面向经验丰富交易者的复杂工具,您将在此列表中找到满足您交易需求的最佳选择。

本指南概述了币圈必备的软件工具,可帮助用户更有效地管理和交易加密资产。这些软件涵盖了从交易平台到分析工具和安全解决方案的广泛类别。该指南旨在帮助用户为即将到来的 2025年加密市场做好准备。

Gateio 交易所 app 老版本下载渠道,涵盖官方、第三方应用市场、论坛社区等途径,还给出下载注意事项,帮你轻松获取老版本,解决新版本使用不适或设备兼容问题。

实时比特币美元价格 影响比特币价格的因素 预测比特币未来价格的指标 以下是 2018-2024 年比特币价格的一些关键信息:

对于从事虚拟货币交易的人士而言,选择一款优秀的看盘软件至关重要。本文旨在向读者介绍十款最受好评的虚拟货币交易所看盘软件,帮助他们做出明智的选择。这些软件提供多种功能,包括实时报价、技术分析工具、图表和自定义警报,以满足不同交易者的需求。无论您是经验丰富的专业人士还是刚入门的初学者,本文都会为您提供宝贵的见解,帮助您找到最适合您交易风格的看盘软件。

H5与小程序的推广方式存在差异:平台依赖性:H5依赖浏览器,小程序依赖特定平台(如微信)。用户体验:H5体验较差,小程序提供类似原生应用的流畅体验。传播方式:H5通过链接传播,小程序通过平台分享或搜索。H5推广方式:社交分享、邮件营销、QR码、SEO、付费广告。小程序推广方式:平台推广、社交分享、线下推广、ASO、与其他平台合作。

全面了解欧易 OKX 交易平台的官方入口 实时监控欧易 OKX 交易平台的使用情况 深入探讨欧易 OKX 交易平台的安全性保障和发展规划

数字资产交易领域涌现出众多综合实力强的交易所平台。其中,OKX、币安和火币凭借着雄厚的技术实力、完善的安全保障和丰富的产品线,跻身行业标杆。OKX成立于2013年,拥有强大的技术团队,研发的高性能交易引擎和安全系统保障了用户的交易体验。币安则以全球最大的交易量闻名,其多元化的产品生态和领先的技术优势,引领着行业创新。火币深耕行业多年,拥有良好的用户口碑和品牌影响力,其全球化布局和合规运营,为用户提供可靠的交易环境。
