前言

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相比可擴展性不強。

【責任編輯:趙寧寧 TEL:(010)68476606】

相關文章