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

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

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

    id  time
    

    要求按时间升序排序

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

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

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

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

    桶排序思想,好巧妙!

  • 相关阅读:
    oracle-PL/SQL1
    ROS之Gazebo
    ROS之urdf 2
    ROS之urdf 1
    ROS 面部识别
    ROS x Arduino
    STM32F0的低功耗模式
    项目进度
    C++函数返回为引用
    STM32F0的多路ADC 无DMA
  • 原文地址:https://www.cnblogs.com/plwang1990/p/5894192.html
Copyright © 2011-2022 走看看