前言
Python由于其易用性而成為最流行的語言,它提供了許多庫,使程序員能夠開發更強大的軟件,以并行運行模型和數據轉換。
有這么一個庫,它提供了并行計算、加速了算法,甚至允許您將NumPy和pandas與XGBoost庫集成在一起。讓我們認識一下吧。
什么是Dask
Dask是一個開源項目,它允許開發者與scikit-learn、pandas和NumPy合作開發他們的軟件。它是一個非常通用的工具,可以處理各種工作負載。
這個工具包括兩個重要的部分;動態任務調度和大數據收集。前面的部分與Luigi、芹菜和氣流非常相似,但它是專門為交互式計算工作負載優化的。
后一部分包括數據幀、并行數組和擴展到流行接口(如pandas和NumPy)的列表。
事實上,Dask的創建者Matthew Rocklin先生確認Dask最初是為了并行化Pandas和NumPy而創建的,盡管它現在提供了比一般的并行系統更多的好處。
Dask的數據幀非常適合用于縮放pandas工作流和啟用時間序列的應用程序。此外,Dask陣列還為生物醫學應用和機器學習算法提供多維數據分析。
可擴展性
Dask如此受歡迎的原因是它使Python中的分析具有可擴展性。
這個工具的神奇之處在于它只需要最少的代碼更改。該工具在具有1000多個核的彈性集群上運行!此外,您可以在處理數據的同時并行運行此代碼,這將簡化為更少的執行時間和等待時間!
該工具完全能夠將復雜的計算計算調度、構建甚至優化為圖形。這就是為什么運行在10tb上的公司可以選擇這個工具作為首選的原因。
Dask還允許您為數據數組構建管道,稍后可以將其傳輸到相關的計算資源。總之,這個工具不僅僅是一個并行版本的pandas。
如何工作
現在我們已經理解了Dask的基本概念,讓我們看一個示例代碼來進一步理解:
import dask.array as da
f = h5py.File('myfile.hdf5')
x = da.from_array(f['/big-data'],
chunks=(1000, 1000))
對于那些熟悉數據幀和數組的人來說,這幾乎就是你放置數據的地方。
在本例中,您已經將數據放入了Dask版本中,您可以利用Dask提供的分發特性來運行與使用pandas類似的功能。
為何如此流行
作為一個由PyData生成的現代框架,Dask由于其并行處理能力而備受關注。
在處理大量數據——尤其是比RAM大的數據塊——以便獲得有用的見解時,這是非常棒的。公司受益于Dask提供的強大分析,因為它在單機上進行高效的并行計算。
這就是為什么Gitential、Oxlabs、DataSwot和Red Hat等跨國公司已經在他們的日常工作系統中使用Dask的主要原因。總的來說,Dask之所以超級受歡迎是因為:
- 集成:Dask提供了與許多流行工具的集成,其中包括PySpark、pandas、OpenRefine和NumPy。
- 動態任務調度:它提供了動態任務調度并支持許多工作負載。
- 熟悉的API:這個工具不僅允許開發人員通過最小的代碼重寫來擴展工作流,而且還可以很好地與這些工具甚至它們的API集成。
- 向外擴展集群:Dask計算出如何分解大型計算并有效地將它們路由到分布式硬件上。
- 安全性:Dask支持加密,通過使用TLS/SSL認證進行身份驗證。
優缺點
讓我們權衡一下這方面的利弊。
使用Dask的優點:
- 它使用pandas提供并行計算。
- Dask提供了與pandas API類似的語法,所以它不那么難熟悉。
使用Dask的缺點:
- 在Dask的情況下,與Spark不同,如果您希望在創建集群之前嘗試該工具,您將無法找到獨立模式。
- 它在Scala和R相比可擴展性不強。
原文鏈接:
https://medium.com/better-programming/what-is-dask-and-how-can-it-help-you-as-a-data-scientist-72adec7cec57