Skip to content

IncubatorShokuhou/dask-tutorial-chinese

 
 

Repository files navigation

Dask 教程

本教程最后一次在 SciPy 2020上提供,这是一个虚拟会议。 SciPy 2020教程的视频可在线获取.

Binder Build Status

Dask提供一种在大于内存的数据集上多核运行的方法。

我们可以从高阶和低阶两个层次考虑:

  • 高阶集合: Dask提供了高阶的Array,Bag和DataFrame, 它们模仿了NumPy,List和Pandas,但可以在不适合主内存的数据集上并行操作。 Dask的高阶集合是NumPy和Pandas在大型数据集的替代品。
  • 低阶计划程序: Dask提供了动态任务计划程序,可并行执行任务图。 这些执行引擎为上述高阶集合提供支持,但也可以为用户定义的自定义工作负载提供支持。 这些调度器的等待时间很短(大约1毫秒),并且努力在较小的内存占用空间中运行计算。 Dask的调度器是在复杂情况或其他任务调度系统(如LuigiIPython parallel)中直接使用threadingmultiprocessing库的替代方法。

不同的用户在不同的级别上进行操作,但了解两者都有帮助。 本教程将在dask.arraydask.dataframe的高阶使用(偶数章节)和dask图和调度器的低阶使用(奇数章节)之间进行交错。

准备工作

1. 你需要克隆这个仓库

git clone http://github.com/IncubatorShokuhou/dask-tutorial

然后安装必要的包。 有三种方法可以安装这些包。选择最适合你的方法,且 只需选择其中一个。 他们分别是(按推荐顺序):

2a) 创建一个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

2b) 在一个已有的环境中安装

您将需要以下核心库

conda install numpy pandas h5py pillow matplotlib scipy toolz pytables snakeviz scikit-image dask distributed -c conda-forge

您可能会发现以下库对某些练习有帮助

conda install python-graphviz -c conda-forge

请注意,此选项将更改您的现有环境,可能会更改您已经安装的软件包的版本。

2c) 使用Dockerfile

您可以从提供的Dockerfile中构建Docker映像。

$ docker build . # 这将构建a)中相同的环境

运行一个容器,将ID替换为先前命令的输出值

$ docker run -it -p 8888:8888 -p 8787:8787 <container_id_or_tag>

上述命令会生成一个链接(例如 http://(container_id or 127.0.0.1):8888/?token=<sometoken>) ,可用于从浏览器访问notebook。 您可能需要用localhost127.0.0.1替换为给定的主机名。

你只需要执行上述选项中的一个!

启动notebook

从仓库目录执行

jupyter notebook

jupyter lab

该步骤已在选项 c) 中执行,不需要再重复。

链接

大纲

  1. 概述 - dask在宇宙中的地位。

  2. 延迟执行 - 并行化一般python代码的单函数方法。

1x. 惰性执行 - 惰性执行背后的一些原则,供感兴趣的人参考。

  1. Bag - 第一个高级集合:用于函数式编程风格和清理杂乱数据的通用迭代器。

  2. Array - 分块化的类numpy功能,包含分布在集群中的 numpy 数组集合。

  3. Dataframe - 对分布在集群中的许多Pandas Dataframe的并行操作。

  4. 分布式 - Dask的集群调度器,以及如何查看UI的详细信息。

  5. 进阶分布式 - 关于分布式计算的更多细节,包括如何调试。

  6. Dataframe存储 - 将Dataframe读写到磁盘的有效方法。

  7. 机器学习 - 将dask应用于机器学习问题。

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 92.4%
  • Python 7.1%
  • Other 0.5%