Python中的Dask简介
Dask 是一个在Python中支持并行计算的库。它提供了以下功能 -
- 针对交互式计算工作负载优化的动态任务调度
- dask 的大数据集合扩展了 NumPy、Pandas 等常用接口。
为什么是达斯克?
大多数大数据分析将使用 Pandas、NumPy 来分析大数据。所有提到的包都支持各种各样的计算。但是当数据集不适合内存时,这些包将无法扩展。天黑了。当数据集不“适合内存”时,dask 会将数据集扩展为“适合磁盘” 。 Dask 允许我们根据数据集的大小轻松地扩展到集群或缩小到单台机器。
安装
要安装此模块,请在终端中键入以下命令 -
python -m pip install "dask[complete]"
让我们看一个比较 dask 和 pandas 的示例。要下载以下示例中使用的数据集,请单击此处。
1. Pandas 性能:使用 pd.read_csv() 读取数据集
Python3
import pandas as pd
%time temp = pd.read_csv('dataset.csv',
encoding = 'ISO-8859-1')
Python3
import dask.dataframe as dd
%time df = dd.read_csv("dataset.csv",
encoding = 'ISO-8859-1')
输出:
CPU times: user 619 ms, sys: 73.6 ms, total: 692 ms
Wall time: 705 ms
2. Dask 性能:阅读 使用 dask.dataframe.read_csv 的数据集
Python3
import dask.dataframe as dd
%time df = dd.read_csv("dataset.csv",
encoding = 'ISO-8859-1')
输出:
CPU times: user 21.7 ms, sys: 938 µs, total: 22.7 ms
Wall time: 23.2 ms
现在可能会出现一个问题,即在 dask 之前使用 pandas 处理了多大的数据集?在 pandas 中管理大型数据集的技巧很少。
- 在 pandas 中使用 read_csv 的 chunksize 参数
- 读取 csv 文件时仅使用需要的列
在使用 pandas 读取大型数据集时,大多数情况下都会遵循上述技术。但在某些情况下,在 dask 起主要作用时,上述内容可能没有用。
黑暗的局限
dask 有一定的局限性。
- Dask 不能在单个任务中并行化。
- 作为分布式计算框架,dask 支持远程执行任意代码。所以 dask 工作人员应该只托管在受信任的网络中。