Python可能是2017年數(shù)據(jù)科學中最流行的編程語言,其主要競爭語言是R。Scala是一門多范式的編程語言,設(shè)計初衷是要集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。洛桑聯(lián)邦理工學院的MartinOdersky于2001年基于Funnel的工作開始設(shè)計Scala。2009年4月,Twitter宣布他們已經(jīng)把大部分后端程序從Ruby遷移到Scala,其余部分也打算要遷移。Coursera把Scala作為服務(wù)器語言使用。
Scikit-learn,一個Scala無法提供比之更好的機器學習庫。
Python社區(qū)比Scala更大。
學習資源更易獲取,相比于Scala。
幾乎有所有深度學習框架的API。
非常容易學習。
Spark是用Scala寫的。最好的Spark體驗來自Scala的使用。
強大的功能性語言。
先進型系統(tǒng)。
Spark同樣也有PythonAPI,你可以使用Python編寫相當數(shù)量的功能性代碼,這相對增加了Scala的優(yōu)勢。
Scala+Spark是需要大量計算機的分批數(shù)據(jù)管道的最佳選擇。例如,在EuclidAnalytics中,我們使用Spark每天處理大約100gb的傳感器數(shù)據(jù),并將其總結(jié)為可操作的指標。有幾件事情使Scala/Spark非常棒:
Spark是迄今為止在多臺機器上運行分析工作的最簡單和最佳支持的選項。
功能語言對于數(shù)據(jù)管道來說非常適合,因為管道本質(zhì)上是數(shù)據(jù)集上的一個大功能(由幾個較小的函數(shù)組成)。
靜態(tài)類型使得在運行代碼之前更容易避免錯誤,當你的工作需要幾個小時才能執(zhí)行時,這很重要。
但這是一個非常具體的利基,90%的公司不應(yīng)該使用它。Python、R和SQL對于大多數(shù)公司的工作類型來說仍然要好一些,其中包括探索性分析,統(tǒng)計學和機器學習。相比之下,Scala/Spark在所有這些方面都相當薄弱:Scala在生產(chǎn)工作方面表現(xiàn)優(yōu)異,但對于臨時工作,它依然是一個相當差的工具。