问题描述
我知道我可以在 spark 上轻松做到这一点,但一直在尝试使用 dask 并不断出现内存不足错误,也许我没有正确做。
情况是这样的:我有一个非常大的数据框,我们称之为 df
。 df
有 2 列:key 和 amount
key amount
1 4.2
1 4.3
1 4.2
2 4.1
2 4.1
2 4.3
def process(df):
// a lot of processing
// cant be written in dask
return df
如您所见,进程对整个数据帧进行操作并返回一个已处理的新数据帧。 process 里面的东西不能翻译成 dask。
我需要按键进行分区(所以我每个键得到 1 个数据帧),在每个键的数据帧上运行进程,然后将它们组合回单个数据帧,最后将其写为 csv。
我尝试过 df.groupby("key").apply(process).to_csv(...)
但内存不足。
我也试过 df.map_partitions(...).compute()
但内存不足
我阅读了文档,甚至尝试了 df.map_partitions(lambda x: x.groupby(..).apply(proc))
,但意识到这不起作用,因为组不是按分区隔离的。
我知道这很容易做我做错了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)