Dask
Dask是一款用于分析计算的灵活并行计算库。
Dask是一个并行计算库,能在集群中进行分布式计算,能以一种更方便简洁的方式处理大数据量,与Spark这些大数据处理框架相比较,Dask更轻。Dask更侧重与其他框架,如:Numpy,Pandas,Scikit-learning相结合,从而使其能更加方便进行分布式并行计算
入门Dask DataFrame很容易,但是要很好的使用它需要一些经验。
Dask DataFrame是由许多较小的Pandas DataFrame组成的大型并行DataFrame
当内存无法容纳数据时,可以使用数据分块的方法:以数据块的形式分批加载到内存进行处理。这样就可以通过加载数据集的子集,来逐步处理整个数据集。
Dask存在三种最基本的数据结构,分别是:Arrays、Dataframes以及Bags
安装:pip install dask
1 | import pandas as pd |
dask.array
1 | Dask中的Arrays(位于包dask.arrays下),其实就是对Numpy中的ndarray的部分接口进行了改进,从而方便处理大数据量。对于大数据集,特别是其大小大于内存时,如果我们要对其计算,按照传统的方式,,我们会将其全部塞进内存里,那么这就会报Out-Of-Memory错误,当然,我们也可以一次读取一部分数据,那么我们是否可以提前将大数据集进行分块处理了,我们只需要控制每块数据集不超过内存,从而满足In-Memory计算了?Dask就是这样做的 |
dask.dataframe(调用Pandas API)
1 | Dask Dataframe对象则 在处理远大于当前主机内存的表格数据有用。与传统pandas Dataframe在加载完成所有数据后继续数据类型推断不同Dask Datadrame支持部分加载数据时,对表格数据类型进行推断。Dask Dataframe实现了分块并行Dataframe, 对Dask Dataframe的操作将被映射到按索引列划分的子Dataframe上 |
dask.bag
1 | 对于Bags,其最主要的是用于半结构化的大数据集,比如日志或者博客等等,我们从其read_text(dask.bag.text.py)中来解析如何创建一个Dask Bag对象 |
四、Dask分布式
dask.delayed 和 dask.bag
1 | delayed :延迟计算,并不是立即计算,而是将关系绘制成一个图,可以使用visualize查看并行的可能性,然后使用compute立刻开始计算 |
Dask创建和存储数据框
1 | 读: |
#####Dask的Sql
1 | 1.Dask不支持任意文本查询,仅支持整个表和sqlalchemy |
默认情况下,Dask DataFrame使用多线程调度程序。
Dask是为处理大于内存的数据集而设计的
2021
dask分布式
1 | 1.python -m pip install dask distributed --upgrade |
使用
#####同时使用某函数——>等价分布式
1 | #==================================1================================= |
分布式传参案例
1 | # -*- coding: utf-8 -*- |
`
1 | client.persist(df) #持久化dataframe,主要针对大的数据集 |
#####pandas groupby 优化
1 | 1.multiprocessing |
注意:parallel_apply应用的函数不应该是lambda函数===>尽量
np.vectorize,矢量化函数,矢量化操作,可用来优化apply
1 | def func(a,b): |
#####可视化失败时候