php大文件怎么排序去重,简单实现大文件的排序和去重
有一道校招生的面试题,是要给一个很大的文件(不能全部放内存,比如1T)按行来排序和去重。
一种简单解决方案就是分而治之,先打大文件分词大小均匀的若干个小文件,然后对小文件排好序,最后再Merge所有的小文件,在Merge的过程中去掉重复的内容。
在Linux下实现这个逻辑甚至不用自己写代码,只要用shell内置的一些命令: split, sort就足够了。我们把这个流程用脚本串起来,写到shell脚本文件里。文件名叫sort_uniq.sh.#!/bin/bash
lines=$(wc -l $1 | sed 's/ .*//g')
lines_per_file=`expr $lines / 20`
split -d -l $lines_per_file $1 __part_$1
for file in __part_*
do
{
sort $file > sort_$file
} &
done
wait
sort -smu sort_* > $2
rm -f __part_*
rm -f sort_*
使用方法:./sort_uniq.sh file_to_be_sort file_sorted
这段代码把大文件分词20或21个小文件,后台并行排序各个小文件,最后合并结果并去重。
如果只要去重,不需要排序,还有另外一种思路:对文件的每一行计算hash值,按照hash值把该行内容放到某个小文件中,假设需要分词100个小文件,则可以按照(hash % 100)来分发文件内容,然后在小文件中实现去重就可以了。
php大文件怎么排序去重,简单实现大文件的排序和去重相关推荐
- java 文件url地址_简单的解析文件,取URL地址,并根据地址抓下页面
/** * * 解析文件,取出URL地址 * */ public static void regexStr(){ String input="飞机但是http://mail.Sohu.com ...
- endnote的enl文件格式_endnoteenl文件丢失(一步简单还原丢失文件)
如何安全找回丢失数据的方法 1. 下载并安装B计划数据恢复软件. 2. 运行恢复软件,点击"深度扫描". 深度扫描是绕过文件系统直接从硬盘.U盘.SD卡等设备底层恢复数据,因此使用 ...
- 安卓手机如何打开php文件夹,Android_Android中调用系统的文件浏览器及自制简单的文件浏览器,调用系统自带的文件浏览器- phpStudy...
Android中调用系统的文件浏览器及自制简单的文件浏览器 调用系统自带的文件浏览器这很简单: /** 调用文件选择软件来选择文件 **/ private void showFileChooser() ...
- 服务器内文件大小排序,centos 如何查找大文件,文件排序方案大全
本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规.大家都是程序员,不要闹得不开心. centos服务器,使用一段时间后,有的时候会报警:磁盘空间不足.解决方法就是:找到系统盘里面的大文件,然后删 ...
- python从入门到大神---4、python3文件操作最最最最简单实例
python从入门到大神---4.python3文件操作最最最最简单实例 一.总结 一句话总结: python文件操作真的很简单,直接在代码中调用文件操作的函数比如open().read(),无需引包 ...
- 用python简单查找大文件
以前清扫用户文件夹时,总是要一个文件夹文件夹的找,今天有空就用python简单的写了个脚本,来查找给定大小范围的文件. 废话不说,上代码. """该脚本用于在用户目录中查 ...
- python读取大文件目录_python简单读取大文件的方法
python简单读取大文件的方法 更新时间:2016年07月01日 10:42:14 作者:holybin 这篇文章主要介绍了python简单读取大文件的方法,通过非常简单的方式实现对GB级别大文件的 ...
- MP4文件太大怎么变小?简单的方法是什么?
MP4视频格式相信是大家见过最多的一个视频格式了,当我们遇到因为视频太大而无法进行使用的情况下,我们应该如何在不缩短视频时长的情况下,对视频进行压缩呢?西面将方法分享给大家,一起来看看吧! 使用工具: ...
- php打包压缩下载多大,php多文件打包压缩下载简单示例
调用php中内置扩展ZipArchive类可以进行文件压缩打包下载,(PHP 5>=5.2.0,PHP 7,PECL zip>=1.1.0) 调用php中内置扩展ZipArchive类可以 ...
最新文章
- Keepalived+LVS+Nginx负载均衡之高可用
- STM32跑分?看看你的能跑多少分!
- HoloLens开发手记-硬件细节 Hardware Detail
- CASS软件学习笔记
- Visual C++ 时尚编程百例016(字体)
- HTML+CSS+JS实现echarts图表炫光分布地图动画
- Mysql读写锁保姆级图文教程
- linux32位运行64位程序,32位windows下可以运行的程序在64位linux下报错
- CSS面试题汇总(三)
- 如何重置IE浏览器?重置IE浏览器的方法
- 计算机excel中百分比怎么算,excel如何自动算百分比
- springboot接入微信,支付宝支付
- 关于IE浏览器的一些思路
- .NET 6 中的 Http Logging 中间件
- 论文阅读:VoltJockey: Breaching TrustZone by Software-Controlled Voltage Manipulation over
- oracle ocx加载错误,怎么对.ocx格式的文件进行注册加载?出现0x8002801c错误怎么办?...
- 回顾|领略云原生技术之美
- 雪球产品,场外雪球结构介绍
- 八、Linux全套大总结
- 概率论与数理统计学习笔记(6)——分布律,分布函数,密度函数