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 的调度程序是在复杂情况下直接使用 threadingmultiprocessing 库或其他任务调度系统 (如 LuigiIPython 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

在运行此笔记本 之前 执行此操作。

链接

教程布局

每个部分都是一个 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-tutorial

Dask 教程