在 Dask 中使用所有核心
Using all cores in Dask
我正在开发具有 24 个 vCPU 的 google 云计算实例。代码运行ning如下
import dask.dataframe as dd
from distributed import Client
client = Client()
#read data
logd = (dd.read_csv('vol/800000test', sep='\t', parse_dates=['Date'])
.set_index('idHttp')
.rename(columns={'User Agent Type':'UA'})
.categorize())
当我 运行 它时(这也是我在加载数据后进行的后验数据分析的情况)我看到使用了 11 个核心,有时是 4 个。
有什么方法可以更好地控制它并充分利用内核?
read_csv 将根据 chunksize 参数将文件分成块,每个输入文件至少一个块。您只读取一个文件,而且您似乎得到了四个分区(即大小 < 4 * 64MB)。这对于数据量来说可能是合理的,许多小任务的额外并行化可能只会增加开销。
不过,您可以更改 blocksize 参数并查看它对您有何不同,或者查看当您传递多个文件时会发生什么,例如 read_csv('vol/*test')
。或者,您可以在对 set_index.
的调用中设置分区
我正在开发具有 24 个 vCPU 的 google 云计算实例。代码运行ning如下
import dask.dataframe as dd
from distributed import Client
client = Client()
#read data
logd = (dd.read_csv('vol/800000test', sep='\t', parse_dates=['Date'])
.set_index('idHttp')
.rename(columns={'User Agent Type':'UA'})
.categorize())
当我 运行 它时(这也是我在加载数据后进行的后验数据分析的情况)我看到使用了 11 个核心,有时是 4 个。
有什么方法可以更好地控制它并充分利用内核?
read_csv 将根据 chunksize 参数将文件分成块,每个输入文件至少一个块。您只读取一个文件,而且您似乎得到了四个分区(即大小 < 4 * 64MB)。这对于数据量来说可能是合理的,许多小任务的额外并行化可能只会增加开销。
不过,您可以更改 blocksize 参数并查看它对您有何不同,或者查看当您传递多个文件时会发生什么,例如 read_csv('vol/*test')
。或者,您可以在对 set_index.