2016-07-27 136 views
1

最近我一直在pySpark工作很多,所以我已經習慣了它的語法,不同的API和HiveContext函數。很多時候,當我開始一個項目時,我並沒有完全意識到它的作用範圍或者輸入數據的大小,所以有時候我最終需要分佈式計算的全部功能,而在其他項目中,我最終會遇到一些腳本可以在我的本地機器上正常運行。PySpark(本地)與Jupyter筆記本上的Python編程

我的問題是,使用pySpark作爲我的主要語言與常規Python /熊貓進行比較,即使只是一些探索性分析,是否存在缺點?我主要問的原因是語言之間切換的認知工作,以及如果我需要分發工作,將我的代碼從Python移動到pySpark的麻煩。我知道Python會有更多的功能,但是到目前爲止我的當前項目都沒有使用任何未被Spark覆蓋的庫,所以我主要關心速度,內存和其他可能的缺點;哪個在我的本地機器上表現更好?

+2

在我看來,我並沒有看到任何劣勢。即使使用PySpark,您仍然可以在需要時使用Python庫。所以我肯定會推薦你繼續使用PySpark,因爲你必須使用非常大的數據集。 – KartikKannapur

回答

0

我處於類似的情況。我們已經完成了大部分Python開發工作(主要是Pandas),現在我們正在轉向Spark,因爲我們的環境已經成熟到可以使用它的程度。

我看到PySpark的最大缺點是當我們必須在整個DataFrame上執行操作時,PySpark並不直接支持庫或方法。例如,當試圖使用Lifetime庫時,PySpark不支持此功能,因此我們必須將PySpark Dataframe轉換爲Pandas Dataframe(這需要花費大量時間並失去羣集的優勢),或者將代碼轉換爲PySpark可以通過PySpark DataFrame進行消費和並行處理。

+0

另一個缺點取決於你喜歡如何使用Python - 如果你是一名分析師,你喜歡每隔一段時間查看一次數據。 PySpark需要大量的時間 - 只要在PySpark上調用.take()或.show()方法就可以拖動,因爲集羣將所有內容都拉回到邊緣節點上,Pandas上的.head()方法只需要幾秒鐘。 – MisterJT