Dask教程:简介
本文翻译自 dask-tutorial 项目
欢迎来到 Dask 教程。
Dask 是一个并行计算库,可扩展现有的 Python 生态系统。 本教程将更一般地介绍 Dask 和并行数据分析。
Dask 可以缩小到您的笔记本电脑,也可以扩展到集群中。 在这里,我们将使用您在笔记本电脑上设置的环境,在本地并行分析中等规模的数据集。
概述
Dask 在大于内存 (larger-than-memory) 的数据集上提供多核和分布式并行执行。
我们可以从高层和底层来考虑 Dask
高层集合:Dask 提供了模拟 NumPy、lists 和 Pandas 的高层 Array、Bag 和 DataFrame 集合,但可以在不适合内存的数据集上并行操作。 对于大型数据集,Dask 的高层集合是 NumPy 和 Pandas 的替代品。
底层调度程序:Dask 提供了并行执行任务图的动态任务调度程序。 这些执行引擎支持上面提到的高级集合,但也支持自定义的、用户定义的工作负载。 这些调度程序是低延迟的 (大约 1 毫秒),并且努力在很小的内存占用中运行计算。 Dask 的调度程序是在复杂情况下直接使用
threading
或multiprocessing
库或其他任务调度系统 (如Luigi
或IPython parallel
) 的替代方案。
不同的用户在不同的级别上操作,但了解两者很有用。
Dask 用例提供了许多 Dask 应该很适合的示例工作流。
准备
你应该克隆这个存储库:
git clone http://github.com/dask/dask-tutorial
binder
子目录中包含的文件 environment.yml
包含运行本教程所需的所有包的列表。
要使用 conda
安装它们,您可以执行以下操作:
conda env create -f binder/environment.yml
conda activate dask-tutorial
jupyter labextension install @jupyter-widgets/jupyterlab-manager
jupyter labextension install @bokeh/jupyter_bokeh
在运行此笔记本 之前 执行此操作。
链接
- 参考
- 请求帮助
- Stack Overflow 上的
dask
标签,用于使用问题 - github issues 用于错误报告和功能请求
- gitter chat 用于一般、非错误、讨论
- 参加现场教程
- Stack Overflow 上的
教程布局
每个部分都是一个 Jupyter 笔记本,是有文本、代码和练习的混合体。
如果你没有使用过 Jupyterlab,它类似于 Jupyter Notebook。 如果您还没有使用过 Notebook,那么快速介绍是
- 有两种模式:命令和编辑
- 在命令模式下,按
Enter
编辑单元格(例如这个 markdown 单元格) - 在编辑模式下,按
Esc
切换到命令模式 - 按
shift+enter
执行一个单元格并移动到下一个单元格
工具栏有用于执行、转换和创建单元格的命令。
本教程的布局如下:
基础:解释什么是 Dask,它是如何工作的,以及如何使用低级原语来设置计算。 普通用户可能希望跳过本节,尽管我们认为它对所有用户都是有用的知识。
分布式:有关在分布式调度器上运行 Dask 的信息,这可以扩展到分布式设置并增强对任务操作的监控。 分布式调度器现在通常是执行任务工作的推荐引擎,即使在单个工作站或笔记本电脑上也是如此。
集合:方便的抽象给大数据带来熟悉的感觉
- bag:具有函数式范式的 Python 迭代器,例如可以在 func/iter-tools 和 toolz 中找到。 将列表/生成器泛化为大数据; 这对于 PySpark 的 RDD 的用户来说应该很熟悉
- array:海量多维数值数据,具有 Numpy 功能
- dataframes:海量表格数据,具有 Pandas 功能
尽管上面链接的文档中有大量信息,但我们在此旨在提供实用建议,以帮助您在日常情况下理解和应用 Dask。 这意味着您不应期望涵盖 Dask 的每个功能,但希望这些示例与您想到的工作流类型相似。
练习:打印 Hello, world!
每个笔记本都会有练习供您解决。 您将获得一个空白或部分完成的单元格,然后是一个带有解决方案的隐藏单元格。 例如:
打印文本 “Hello, world!”
print("Hello, world!")
print("Hello, world!")
参考
Dask 教程