Python dask作业因内存使用而被终止?

Python dask作业因内存使用而被终止?,python,performance,dask,Python,Performance,Dask,嗨,我有一个python脚本,它使用dask库来处理比物理内存大的非常大的数据帧。我注意到,如果内存占用在计算机的100%内存中一段时间,作业就会在运行过程中被杀死。p> 这是预期的吗?我原以为数据会溢出到磁盘上,还有足够的磁盘空间 有没有办法限制它的总内存使用量?谢谢 编辑: 我还尝试: 设置选项(可用内存=12e9) 它不起作用。它似乎没有限制内存的使用。同样,当内存使用率达到100%时,作业将被终止。请尝试使用以下命令分块查看数据: chunksize=10**6 对于pd.read_cs

嗨,我有一个python脚本,它使用dask库来处理比物理内存大的非常大的数据帧。我注意到,如果内存占用在计算机的100%内存中一段时间,作业就会在运行过程中被杀死。p> 这是预期的吗?我原以为数据会溢出到磁盘上,还有足够的磁盘空间

有没有办法限制它的总内存使用量?谢谢

编辑:

我还尝试:

设置选项(可用内存=12e9)


它不起作用。它似乎没有限制内存的使用。同样,当内存使用率达到100%时,作业将被终止。

请尝试使用以下命令分块查看数据:

chunksize=10**6
对于pd.read_csv中的块(文件名,chunksize=chunksize):
处理(块)

 ddf = ddf.set_index("sort_col").compute()
实际上是将整个数据帧拉入内存并转换为熊猫。您需要删除
.compute()
,并在调用
compute
生成足够小的结果之前,首先应用所需的任何逻辑(筛选、分组/聚合等)


需要记住的重要一点是,结果输出必须能够放入内存,并且每个工作者正在处理的每个块(加上开销)也需要能够装入内存。

您的数据有多大?你收到错误信息了吗?Dask应该只在调用
dd.compute()
时使用内存,其中
dd
是您的Dask数据帧。您可以发布一些代码来查看如何调用Dask方法吗?另外,您是否检查了dask进程是否消耗了100%的内存?CSV文件在没有压缩的情况下约为90 GB,而我的物理内存为16 GB。最昂贵的部分是通过set_index()进行全局排序。基本上,代码是这样的:ddf=dd.read\u csv(“*.csv”),ddf=ddf.set\u index(“sort\u col”).compute()。没有错误消息,除非系统告诉我作业被终止。我正在EC2实例中运行它。您调用的代码应该是问题的一部分,而不仅仅是在注释中。谢谢您的回复。在代码中,我需要通过set_index()进行全局排序。我仍然可以分块处理它吗?不幸的是,不可以。这种分块处理方式对于累积/聚合非常有用,但对于不能独立处理每个分块的任何事情都不行。