我有一个大文件〜5TB(> 2000列和250毫升行),并希望将其与另一个非常小~10 GB(10列和20行)的文件连接起来。
这是我目前在Python中的方法:
码:
import pandas as pd
small_file = pd.read_csv('small_file.txt', sep='|', header=None,
usecols=[0,1,2,3,4,5,6,7,8,9], dtype=column_types_small_file)
small_file.set_index(2, inplace=True)
large_file_part_k= pd.read_csv('large_file_part_k.txt', sep='|', header=None)
large_file_part_k.set_index(2, inplace=True)
merged = pd.merge(small_file, large_file_part_k, how="inner", left_index=True, right_index=True)
merged.to_csv('join_results.csv', mode='a', header=False)
这工作:)但一部分的处理需要约550秒。为什么?将一个部件装入内存需要约450秒。 :(我试图在加载到内存时为所有列定义数据类型,但它更糟糕的是3-4倍。
对于这种特殊情况,您还有其他选择吗?我使用的机器有120 GB内存和32个内核。