Dask 介紹
Dask是一款用於分析計算的靈活並行計算庫。
Dask由兩部分組成:
針對計算優化的動態任務調度。這與Airflow,Luigi,Celery或Make類似,但針對交互式計算工作負載進行了優化。
“大數據”集合, 像並行數組,數據框和列表一樣,它們將通用接口(如NumPy,Pandas或Python迭代器)擴展到大於內存或分布式環境。 這些並行集合運行在動態任務調度器之上。
Dask 安裝
在配置好 pip 的環境下安裝,只需要命令
pip install dask
即可安裝完成Dask的核心部分。而且非常小,才 1MB
但是如果需要用到比較多的功能的話,還是建議裝完整版本
pip install dask[complete]
這里還要注意一個坑,dask的有一些庫要求的python
版本 > 2.7.8 或者 3.4——版本過低容易被坑
Dask簡單使用:
Dask用例大致可以分為以下兩類:
-
大型NumPy / Pandas /使用dask.array,dask.dataframe,dask.bag列出來分析具有熟悉技術的大型數據集。這與Databases,Spark或大型數組庫類似。
-
自定義任務計划。您提交了一個相互依賴於自定義工作負載的函數圖。這與Luigi,Airflow,Celery或Makefiles類似。
今天的大多數人都認為Dask假設它是一個像Spark這樣的框架,它圍繞着大量統一形狀數據集合的第一個用例而設計。然而,許多更高效和新穎的用例屬於第二類,使用Dask來並行化定制工作流程。
Dask計算環境可以分為以下兩類:
- 帶有線程或進程的單機並行:Dask單機調度程序利用筆記本電腦或大型工作站的全部CPU功率,並將空間限制從“適合內存”更改為“適合磁盤”。這個調度程序使用簡單,沒有大多數“大數據”系統的計算或概念開銷。
- 多節點上的分布式集群並行:Dask分布式調度程序協調集群中多台機器的操作。它可以在任何地方從一台機器擴展到一千台機器,但不會超越其他機器。
單機調度程序對更多個人有用(更多人擁有個人筆記本電腦,而不是可以訪問群集),並且可能占當前使用Dask的80%以上。分布式機器調度程序對大型機構,研究實驗室或私人公司很有用。
Dask里面提供了很多庫,可以從最普通的 array中入手
第一個hello world的例子:
dask.array的使用:
import dask.array as da
import numpy as np
# 1.example----- HelloWorld
x = np.arange(1000)
print x
y = da.from_array(x, chunks=(100))
print y
print y.mean()
print y.mean().compute()
第二個例子:
產生隨機數:
# 2.example
x = da.random.normal(0, 1, size=(100,100), chunks=(10, 10))
a = x.mean().compute()
print a
bag 提供了 map, filter, fold, groupby等操作
# 3.
import dask.bag as db
b = db.from_sequence([1, 2, 3, 4, 5, 6])
print b
c = db.from_sequence([1, 2, 3, 4, 5, 6], npartitions=2)
print c