利用python对巨量数据排序

针对100GB的数据,由于直接在数据库中排序导致内存溢出,采用Python进行分块排序和归并策略。将大文件切分为40个2.5GB的文件,分别排序后使用归并算法进行合并,类似LeetCode的合并有序数组问题。
摘要由CSDN通过智能技术生成

需求背景

我们有一份100G左右的数据需要根据关键字进行排序,当时想的是直接从数据库select出来的时候直接order by,但是爆内存了,于是考虑导出后直接利用python进行排序。

算法设计

直接利用切割排序,再合并的方式,将100G文件分为40个2.5G的数据文件,分别排序后再归并,思想和leetcode合并n个有序数组的想法如出一辙

归并代码

import glob
import heapq

if __name__ == '__main__':   
    csv_list = glob.glob('./csv/*.csv') 
    print('find %s CSV files'% len(csv_list))
    # if csv file less than 2,we don't need to merge, exit the script
    if len(csv_list) < 2:
        return 0
        
    # open csv file, store the file_handler
    print('processing............')
    file_handler = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值