您如何使用 dask 对列进行分组并使用自定义函数进行应用而不会耗尽内存?

问题描述

我知道我可以在 spark 上轻松做到这一点,但一直在尝试使用 dask 并不断出现内存不足错误,也许我没有正确做。

情况是这样的:我有一个非常大的数据框,我们称之为 dfdf 有 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...