npartitions 在 Dask 数据帧中的作用是啥?
Posted
技术标签:
【中文标题】npartitions 在 Dask 数据帧中的作用是啥?【英文标题】:What is the role of npartitions in a Dask dataframe?npartitions 在 Dask 数据帧中的作用是什么? 【发布时间】:2018-03-20 14:32:21 【问题描述】:我在很多函数中都看到了参数npartitions
,但我不明白它有什么用/有什么用。
http://dask.pydata.org/en/latest/dataframe-api.html#dask.dataframe.read_csv
头(...)
元素仅取自第一个 npartition,默认值为 1。如果第一个 npartition 中的行数少于 n,则会发出警告并返回任何找到的行。传递 -1 以使用所有分区。
重新分区(...)
输出的分区数,必须小于输入的 npartitions。仅在未指定除法时使用。
在这种情况下分区数可能是5:
(图片来源:http://dask.pydata.org/en/latest/dataframe-overview.html)
【问题讨论】:
【参考方案1】:npartitions
属性是组成单个 Dask 数据帧的 Pandas 数据帧的数量。这主要以两种方式影响性能。
-
如果您没有足够的分区,那么您可能无法有效地使用所有内核。例如,如果您的 dask.dataframe 只有一个分区,则一次只能运行一个核心。
如果您有太多分区,那么调度程序可能会产生大量开销来决定在哪里计算每个任务。
通常,您需要的分区数是核心数的几倍。每个任务在调度程序中占用几百微秒。
您可以在数据提取时使用read_csv(...)
中的blocksize=
等参数确定分区数,也可以在之后使用.repartition(...)
方法确定分区数。
【讨论】:
以上是关于npartitions 在 Dask 数据帧中的作用是啥?的主要内容,如果未能解决你的问题,请参考以下文章
从 len 18000 的 Dask 数据帧中采样 n = 2000 会产生错误 当“replace = False”时无法采用比总体更大的样本