本教程最后一次在 SciPy 2020上提供,这是一个虚拟会议。 SciPy 2020教程的视频可在线获取.
Dask提供一种在大于内存的数据集上多核运行的方法。
我们可以从高阶和低阶两个层次考虑:
- 高阶集合: Dask提供了高阶的Array,Bag和DataFrame, 它们模仿了NumPy,List和Pandas,但可以在不适合主内存的数据集上并行操作。 Dask的高阶集合是NumPy和Pandas在大型数据集的替代品。
- 低阶计划程序: Dask提供了动态任务计划程序,可并行执行任务图。 这些执行引擎为上述高阶集合提供支持,但也可以为用户定义的自定义工作负载提供支持。 这些调度器的等待时间很短(大约1毫秒),并且努力在较小的内存占用空间中运行计算。 Dask的调度器是在复杂情况或其他任务调度系统(如
Luigi
或IPython parallel
)中直接使用threading
或multiprocessing
库的替代方法。
不同的用户在不同的级别上进行操作,但了解两者都有帮助。 本教程将在dask.array
和dask.dataframe
的高阶使用(偶数章节)和dask图和调度器的低阶使用(奇数章节)之间进行交错。
git clone http://github.com/IncubatorShokuhou/dask-tutorial
然后安装必要的包。 有三种方法可以安装这些包。选择最适合你的方法,且 只需选择其中一个。 他们分别是(按推荐顺序):
在主仓库目录
conda env create -f binder/environment.yml
conda activate dask-tutorial
jupyter labextension install @jupyter-widgets/jupyterlab-manager
jupyter labextension install @bokeh/jupyter_bokeh
您将需要以下核心库
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
请注意,此选项将更改您的现有环境,可能会更改您已经安装的软件包的版本。
您可以从提供的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。 您可能需要用localhost
或127.0.0.1
替换为给定的主机名。
从仓库目录执行
jupyter notebook
或
jupyter lab
该步骤已在选项 c) 中执行,不需要再重复。
- 参考
- 求助
- Stack Overflow上的
dask
标签, 针对用法问题 - github issues 针对错误报告和功能请求
- gitter chat 针对一般问题、非错误问题、讨论
- 参加现场教程
- Stack Overflow上的
1x. 惰性执行 - 惰性执行背后的一些原则,供感兴趣的人参考。