需求背景
我们有一份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 =