简单实现大文件的排序和去重

有一道校招生的面试题,是要给一个很大的文件(不能全部放内存,比如1t)按行来排序和去重。

一种简单解决方案就是分而治之,先打大文件分词大小均匀的若干个小文件,然后对小文件排好序,最后再Merge所有的小文件,在Merge的过程中去掉重复的内容。

在Linux下实现这个逻辑甚至不用自己写代码,只要用shell内置的一些命令: split, sort就足够了。我们把这个流程用脚本串起来,写到shell脚本文件里。文件名叫sort_uniq.sh.

#!/bin/bashlines=$(wc -l $1 | sed 's/ .*//g')lines_per_file=`expr $lines / 20`split -d -l $lines_per_file $1 __part_$1for file in __part_*do{  sort $file > sort_$file} &donewaitsort -smu sort_* > $2rm -f __part_*rm -f sort_*

登录后复制

使用方法:./sort_uniq.sh file_to_be_sort file_sorted

这段代码把大文件分词20或21个小文件,后台并行排序各个小文件,最后合并结果并去重。

如果只要去重,不需要排序,还有另外一种思路:对文件的每一行计算hash值,按照hash值把该行内容放到某个小文件中,假设需要分词100个小文件,则可以按照(hash % 100)来分发文件内容,然后在小文件中实现去重就可以了。

以上就是简单实现大文件的排序和去重的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3165349.html

(0)
上一篇 2025年3月30日 21:18:35
下一篇 2025年2月18日 04:37:55

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何使用ThinkPHP6实现动态路由

    thinkphp6是一个开源的php框架,它提供了许多便捷的功能来帮助开发者快速构建web应用程序。其中一个强大的功能就是动态路由。本文将介绍如何使用thinkphp6实现动态路由。 什么是动态路由? 路由是指将URL请求映射到应用程序的特…

    编程技术 2025年3月30日
    100
  • 利用ThinkPHP6实现伪静态

    随着互联网的快速发展,网站的建设越来越受到人们的关注。而众所周知,优化网站的seo能够提高网站的排名及流量,并且伪静态就是网站seo优化中不可或缺的一部分。在这篇文章中,我们将会利用thinkphp6实现伪静态,并且进一步探讨伪静态的优化和…

    编程技术 2025年3月30日
    100
  • 如何在PHP中实现管家婆系统?

    管家婆系统在现代企业管理中扮演着重要的角色,它不仅仅能够有效地提高企业的工作效率,还可以大大提高了企业的生产力和竞争力。与此同时,php作为一种广泛使用的动态脚本语言,也受到了许多企业的青睐。接下来,我们将探讨如何在php中实现管家婆系统,…

    编程技术 2025年3月30日
    100
  • 在PHP中如何实现物联网开发?

    随着物联网技术的发展和普及,越来越多的应用场景需要使用php语言进行物联网开发。php作为一种广泛应用于web开发的脚本语言,它的易学易用、开发速度快、可扩展性强等特点,使其成为开发物联网应用的一种优秀选择。本文将介绍在php中实现物联网开…

    编程技术 2025年3月30日
    100
  • 如何实现ThinkPHP6的分页功能

    thinkphp是一款非常流行的php开发框架,其最新版本thinkphp6在性能和易用性方面都得到了很大的改善。分页功能是网页开发中非常常见的功能,而thinkphp6也提供了非常方便的分页方法。本文将介绍如何实现thinkphp6的分页…

    编程技术 2025年3月30日
    100
  • 如何使用ThinkPHP6实现无限滚动

    随着互联网的不断发展,无限滚动已成为现代网页设计的一种重要元素。无限滚动效果可以帮助提高用户体验,让用户可以更轻松地获取信息,提高用户粘性。本文将介绍如何使用thinkphp6框架实现无限滚动效果。 引入jQuery框架 在实现无限滚动之前…

    编程技术 2025年3月30日
    100
  • PHP实现代理服务功能

    php是一种流行的开源web开发语言,许多网站都使用php来构建自己的后端服务。在这些php应用中,经常需要实现代理服务器的功能,以便访问其他服务或站点并将请求响应传递回客户端。在本文中,我们将探讨如何使用php实现代理服务器功能。 一、代…

    编程技术 2025年3月30日
    100
  • PHP实现物流查询功能

    随着电商行业的不断发展,越来越多的人选择在网上购物。在这个过程中,物流查询功能成为了一个必备的服务,因为它可以让消费者随时了解自己的货物运输情况,以及预计到达时间。在本文中,我们将介绍如何使用php实现物流查询功能。 一、什么是物流查询功能…

    编程技术 2025年3月30日
    100
  • uniapp中如何实现插件管理功能

    uniapp中如何实现插件管理功能 随着技术的不断发展,移动应用程序的功能越来越复杂,为了提高开发效率,许多开发者使用了uniapp来开发跨平台的应用。uniapp是一种基于Vue.js的开发框架,可以同时兼容多个平台,如微信小程序、H5、…

    编程技术 2025年3月30日
    100
  • 如何在uniapp中实现问卷调查和反馈收集

    如何在uni-app中实现问卷调查和反馈收集 作为一种全面跨平台的开发框架,uni-app在移动应用开发中越来越受欢迎。对于一些需要进行问卷调查和反馈收集的场景,uni-app也提供了丰富的解决方案。本文将介绍如何在uni-app中实现问卷…

    2025年3月30日
    100

发表回复

登录后才能评论