欧美40老熟妇色xxxxx,免费+国产+在线观看,末成年女a∨片一区二区,久久伊人色av天堂九九,免费中文熟妇在线影片

美林?jǐn)?shù)據(jù)
ABOUT US
美林?jǐn)?shù)據(jù)技術(shù)股份有限公司(簡稱:美林?jǐn)?shù)據(jù),NEEQ:831546)是國內(nèi)知名的數(shù)據(jù)治理和數(shù)據(jù)分析服務(wù)提供商。

數(shù)據(jù)分析工具選Python還是Scala?我們幫你解決選擇困難癥

2022-09-26 09:51:00
做數(shù)據(jù)分析時,如果需要編程,會面臨一個數(shù)據(jù)分析工具選擇的問題:選擇Scala,還是Python?
一般給的建議是小數(shù)據(jù)用Python,大數(shù)據(jù)用Scala,當(dāng)然是基于Spark平臺的Scala,因為JVM的加持,Scala的性能相較于Python快10倍,Scala是函數(shù)式編程語言,主打簡潔、性能;python主打過程式,易用、膠水,生態(tài)完整,是AI時代的御用語言,而且可以使用的數(shù)據(jù)處理基礎(chǔ)庫比較多,最流行的當(dāng)然是Pandas。
數(shù)據(jù)分析工具怎么選
先說下歷史, 圖靈,不但完成了二戰(zhàn)密碼破解任務(wù),而且是計算機(jī)理論的奠基者,解決世紀(jì)數(shù)學(xué)難題的同時完成了那篇著名的論文《On Computable Numbers with an Application to the Entscheidungs-problem》,論文中定義的圖靈機(jī)中僅僅一條紙帶,一個讀寫頭,就可以完成所有計算問題,現(xiàn)在的所有計算機(jī)都可以抽象為圖靈機(jī),圖靈機(jī)也是所有過程式編程語言的基礎(chǔ)理論依據(jù),因為圖靈機(jī)更接近現(xiàn)實世界,更容易實現(xiàn),因此在一段時間內(nèi),全部都是過程式編程語言。
但是,一場天才之間的相遇,丘齊當(dāng)上了圖靈的老師,一場思想的碰撞,邱齊的 lambda算子(λ)橫空出世,只用最簡潔的幾條公理便建立起了與圖靈機(jī)完全等價的計算模型,掀開了函數(shù)編程語言的時代,先后出現(xiàn)了Lisp 、 Scheme 、 Haskell這些以抽象性和簡潔美為主旨的語言。
數(shù)據(jù)分析工具怎么選
函數(shù)式編程簡潔但是不簡單,學(xué)習(xí)曲線陡峭且比較難于進(jìn)行性能優(yōu)化,因此Scala兼采兩家之長,支持函數(shù)式,構(gòu)建于Java生態(tài),復(fù)用了目前Java生態(tài)的所有成果,并且保證了程序執(zhí)行速度,做到了“高效、廣譜”,既可以面向?qū)ο?,過程式編程,降低程序優(yōu)化難度,又可以使用函數(shù)式編程,保證程序的簡潔性。Spark 平臺1.0版的核心代碼只有4萬行,Scala語言的簡潔和豐富的表達(dá)力起到了關(guān)鍵作用。

該如何選擇?
對我們來說,在多個語言間選擇數(shù)據(jù)分析工具一般要考慮3個因素:
? 生態(tài):是否有成熟的函數(shù)庫,能否通過已經(jīng)掌握的編程語言快速過渡?
? 性能:性能如何,在有些情況下是關(guān)鍵決策項?
? 簡潔:語言是否簡潔,能否能夠快速驗證我們的想法,實現(xiàn)“所見即所得”

01、生態(tài)
我們先分析下第一點,從下圖我們可以看到,使用Scala可以直接使用DataFrame,而DataFrame的功能和Pandas完全相同,并進(jìn)一步增加了分布式的能力,能應(yīng)對海量數(shù)據(jù)的處理,所以Scala生態(tài)有特別成熟的函數(shù)庫。
數(shù)據(jù)分析工具怎么選
既然Scala又好又快為什么不直接用Scala做數(shù)據(jù)分析,還要用Python?
前面提到,函數(shù)式編程語言簡潔但是不簡單,學(xué)習(xí)曲線陡峭,既然Scala定位是函數(shù)式編程語言,因此也難逃此定律。使用Python實現(xiàn)數(shù)據(jù)統(tǒng)計,程序容易開發(fā),容易遷移,可快速驗證想法。
大部分?jǐn)?shù)據(jù)分析師都掌握Python,并且基本都會使用Pandas,因此實際應(yīng)用中Python是首選。而基于Scala語言的Spark平臺也有和Pandas對應(yīng)的基礎(chǔ)框架DataFrame,且Pandas和DataFrame之間的函數(shù)功能相似度極高,因此我們也可以基于Python代碼完成對Scala語言的一一比對式學(xué)習(xí),讓學(xué)習(xí)找到著力點,所以,如果你已經(jīng)掌握Python,此時再學(xué)Scala是水到渠成的事。

02、性能
作為一門編程語言,最后都要落地執(zhí)行,性能是至關(guān)重要的一環(huán),性能好意味著時間短,做任何事,時間永遠(yuǎn)是最大的成本。
Python有優(yōu)勢,但是劣勢也相當(dāng)明顯。除了Python語言本身特點導(dǎo)致其執(zhí)行速度比Scala本身慢2到3倍外,不同語言開發(fā)的應(yīng)用程序間的IO也往往是性能的關(guān)鍵瓶頸點。從下圖可以看出,從Scala到Python處理過程需要經(jīng)歷兩次IO過程,在數(shù)據(jù)量較小的情況下,此過程可以順暢執(zhí)行,但如果數(shù)據(jù)量較大,那肯定是瓶頸所在。
數(shù)據(jù)分析工具怎么選

這個問題怎么解決?
目前有一些折中的方法,例如使用Arrow,基于流水線,完成高效的IO過程,如果你不想折中,我建議使用Scala,Scala語言既擁有面向?qū)ο蟮哪芰?,又具有函?shù)式編程的簡潔和高效,并且和Java語言可天然的“零開銷”集成。

03、簡潔
性能上Scala有天然優(yōu)勢,那么從代碼的簡潔度上孰優(yōu)孰劣,能否像Python一樣快速驗證我們的想法?我們從以下幾個從簡單到復(fù)雜的場景比對下”區(qū)別“。
? 第一個場景:字符處理

數(shù)據(jù)分析-字符處理
從最直觀的感受上,這個字符處理場景 Scala略勝一籌。

? 第二個場景:自定義函數(shù)
當(dāng)然,第一個場景只能是演示過程中的用的最直觀的例子,可能在實際生產(chǎn)中的應(yīng)用不多,那對于一些更專業(yè)的技術(shù)人員,自定義函數(shù)是日常開發(fā)中經(jīng)常要用到的,我們再看看在這個場景誰更簡潔:
數(shù)據(jù)分析-自定義函數(shù)
從簡潔性上來說,此役平分秋色。
? 第三個場景:Map/Reduce過程
Map/Reduce過程是現(xiàn)今所有分布式大數(shù)據(jù)處理技術(shù)的理論基石,而其中最關(guān)鍵的一環(huán)是對于鍵值對(Key-Value Pairs)的處理,Scala和python如何處理?
數(shù)據(jù)分析-Map/Reduce過程
此處也是半斤對八兩。
? 第四個場景:數(shù)據(jù)挖掘算法
做開發(fā)不只有簡單場景,我們這里對比下在數(shù)據(jù)挖掘算法中兩種語言的表現(xiàn),二項式邏輯回歸(Binomial logistic regression)給您奉上。
數(shù)據(jù)挖掘算法
數(shù)據(jù)挖掘算法
可以說是互為鏡像,孿生兄弟。

總結(jié)
從過程式到函數(shù)式,編程語言經(jīng)歷了大半個世紀(jì)的發(fā)展,各個分支都已經(jīng)趨近成熟,近15年出現(xiàn)的大數(shù)據(jù)技術(shù)的出現(xiàn)讓各種編程語言有的老樹新花,有的找到了新戰(zhàn)場。
數(shù)據(jù)分析工具
函數(shù)式編程更適合用在大數(shù)據(jù)處理技術(shù)的場景中,而Scala語言結(jié)合過程式的性能,函數(shù)式的簡潔,極其強(qiáng)大的生態(tài),以及背后巨大資本力量的推動,無疑是我們學(xué)習(xí)大數(shù)據(jù)處理技術(shù)的首選語言,如果你是Python開發(fā)者,或者Java開發(fā)者,都可以輕松成為Scala開發(fā)者,快速獲得其性能、簡潔和生態(tài)的優(yōu)勢。
服務(wù)熱線
400-608-2558
咨詢熱線
15502965860
美林?jǐn)?shù)據(jù)
微信掃描二維碼,立即在線咨詢