Python 合并b/w两个dask数据帧,给出内存错误

Python 合并b/w两个dask数据帧,给出内存错误,python,pandas,merge,parquet,dask,Python,Pandas,Merge,Parquet,Dask,读取拼花地板文件 df_ss_parq = dd.read_parquet("trainSearchStream.parquet/") df_ai_parq = dd.read_parquet("AdsInfo.parquet/") 合并两个数据集 df_train =(df_ss_parq.merge(df_ai,on="ad_id",how="left") ).compute() 内存:16 GB 我曾尝试在列“ad_id”上使用索引,这使它更快,但显示了相同的错误 列车搜

读取拼花地板文件

df_ss_parq = dd.read_parquet("trainSearchStream.parquet/")
df_ai_parq = dd.read_parquet("AdsInfo.parquet/")
合并两个数据集

df_train =(df_ss_parq.merge(df_ai,on="ad_id",how="left")
       ).compute()
内存:16 GB

我曾尝试在列“ad_id”上使用索引,这使它更快,但显示了相同的错误

列车搜索流大小=17 GB

AdsInfo大小=17 GB


有人知道如何解决吗?

我建议使用像Impala或Drill这样的SQL引擎进行连接,将结果写入新的拼花文件。Python数据堆栈目前不太适合在内存受限的环境中处理大型表之间的连接

现在还不清楚您到底想要修复什么。从您的问题可以明显看出,即使是使用pandas或dask加载到内存中的单个数据文件也会给您带来MemoryError。你认为这两个词怎样才能进入记忆?因此,如果您的目标是将这两个文件加载到内存中,则需要将RAM增加到预期数据大小的5-10倍。顺便问一下,您不必使用dask。每个数据集中有多少个分区?请注意,内存中的数据通常比磁盘上的数据大得多,因此每个数据集中的一个分区以及中间分区足以填满内存。我曾尝试增加分区,但没有效果。我现在知道了问题所在,我正在使用.compute来创建比RAM大的数据帧,而不是以前我应该做更多的计算。compute来减小数据集的大小