代码之家  ›  专栏  ›  技术社区  ›  Bo Qiang

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

  •  3
  • Bo Qiang  · 技术社区  · 6 年前

    嗨,我有一个python脚本,它使用dask库来处理非常大的数据帧,比物理内存大。我注意到,如果内存使用率保持在计算机的100%一段时间,作业会在运行过程中被终止。

    这是预期的吗?我原以为数据会泄漏到磁盘上,而且还有大量的磁盘空间。

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

    编辑:

    我还尝试了:

    达斯克。设置选项(可用内存=12e9)

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

    2 回复  |  直到 6 年前
        1
  •  2
  •   mdurant    6 年前

    生产线

     ddf = ddf.set_index("sort_col").compute()
    

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

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

        2
  •  0
  •   rodcoelho    6 年前

    请尝试使用以下工具分块查看数据:

    chunksize = 10 ** 6 for chunk in pd.read_csv(filename, chunksize=chunksize): process(chunk)