zoukankan      html  css  js  c++  java
  • 一个大数据排序问题的巧妙解法

    今天工作中遇到一个问题:

    要求对28G的数据排序,数据的格式如下:

    id  time
    

    要求按时间升序排序

    已有的资源为64G内存,32核的服务器一台,需要在一个晚上(8小时)内跑出排序结果。

    一个直观的解法就是把数据全部加载进内存,然而实际操作并不可行,才加载了1/10不到的数据就已经使用了接近40G的内存了。
    另一个解决思路是手动进行map reduce,分成若干小模块,小模块排序之后再逐一合并。这个思路实现起来代价也很高,逐一合并无法利用32核GPU,速度估计不达标。充分利用CPU的话,调度策略编码量估计不小……

    最后我们找到了一个超级巧妙的解决方案:

    按照日期划分文件,每天的数据单独输出成一个文件,由于我们的数据只是1~8月份的数据,故只划分为240多个文件,
    每个文件只有119M,然后利用多核特性对每个文件进行排序,排好序后按文件名收尾连接就好了。

    桶排序思想,好巧妙!

  • 相关阅读:
    Sql Server截断日志(转)
    C#/VB.NET语法的比较(转)
    ReportViewer矩阵报表
    逐步学习 iPhone App 开发(1)
    一月二十四日,无家可归
    再见2009
    poj 1376 机器人广搜
    hdu 1004 颜色问题
    hdu 2734 简单地字符串处理
    1116 贪婪的送礼者
  • 原文地址:https://www.cnblogs.com/plwang1990/p/5894192.html
Copyright © 2011-2022 走看看