npartitions在Dask数据框架中的作用是什么?

时间:2017-10-09 11:35:00

标签: python dataframe dask

我在许多函数中看到了参数npartitions,但我不明白它对什么有用。

http://dask.pydata.org/en/latest/dataframe-api.html#dask.dataframe.read_csv

  

头(...)

     

元素仅取自第一个npartitions,默认值为1.如果第一个npartitions中少于n行,则会引发警告并返回找到的所有行。传递-1以使用所有分区。

     

重新分区(...)

     

输出的分区数,必须小于输入的npartitions。仅在未指定分割时使用。

在这种情况下,分区数量可能是5:

(图片来源:http://dask.pydata.org/en/latest/dataframe-overview.html

1 个答案:

答案 0 :(得分:6)

npartitions属性是组成单个Dask数据帧的Pandas数据帧的数量。这会以两种主要方式影响性能。

  1. 如果您没有足够的分区,那么您可能无法有效地使用所有核心。例如,如果您的dask.dataframe只有一个分区,那么一次只能运行一个核心。
  2. 如果您有太多分区,那么调度程序可能会产生大量开销,决定在哪里计算每个任务。
  3. 通常,您希望分区数比核心分区多几倍。每个任务在调度程序中占用几百微秒。

    您可以使用blocksize=中的read_csv(...)之类的参数或之后使用.repartition(...)方法确定数据提取时间内的分区数。