- Spark海量數(shù)據(jù)處理:技術(shù)詳解與平臺實(shí)戰(zhàn)
- 范東來
- 729字
- 2020-02-14 17:55:32
1.4 如何選擇Spark編程語言
Spark在誕生之初就提供了多種編程語言接口:Scala、Java、Python、SQL,在后面的版本中又加入了R語言編程接口。對于Spark來說,雖然內(nèi)核由Scala編寫而成,但是編程語言從來就不是它的重點(diǎn),從Spark提供這么多的編程接口來看,Spark鼓勵不同背景的人去使用Spark完成自己的數(shù)據(jù)探索工作。盡管如此,不同編程語言在開發(fā)效率、執(zhí)行效率等方面還是有些不同,本書將目前Spark各種編程語言優(yōu)缺點(diǎn)羅列如表1-1所示。
表1-1 Spark開發(fā)語言對比

Scala作為Spark的開發(fā)語言當(dāng)然得到原生支持,也非常成熟,它簡潔的語法也能顯著提高開發(fā)效率;Java也是Spark原生支持的開發(fā)語言,但是Java語法冗長且不支持函數(shù)式編程(1.8以后支持),導(dǎo)致它的API設(shè)計得比較冗余以及不合理,再加上需要編譯執(zhí)行,Java開發(fā)效率無疑是最低的,但Java程序員基數(shù)特別大,Java API對于這些用戶來說無疑是很友好的;Python與R語言都是解釋型腳本語言,不用編譯直接運(yùn)行,尤其是Python更以簡潔著稱,開發(fā)效率自不必說,此外Python與R語言本身也支持函數(shù)式編程,這兩種語言在開發(fā)Spark作業(yè)時也是非常自然,但由于其執(zhí)行原理是計算任務(wù)在每個節(jié)點(diǎn)安裝的Python或R的環(huán)境中執(zhí)行,結(jié)果通過管道輸出給Spark Worker,因此效率要比Scala與Java低,而且PySpark、SparkR這兩個中間件成熟度有待提高。SQL是Spark原生支持的開發(fā)語言,從各個維度上來說都是最優(yōu)的,因此一般情況下,用Spark SQL解決問題是最優(yōu)選擇。
對于剛剛開始學(xué)習(xí)Spark的用戶,一開始最好選擇一門自己最熟悉的語言,這樣Spark的學(xué)習(xí)曲線比較平緩。如果從零開始,建議在Scala與Python中間選擇,Scala作為Spark的原生開發(fā)語言,如果想要深入了解Spark有必要掌握;Python在開發(fā)速度方面的優(yōu)勢可以賦予開發(fā)人員極強(qiáng)的數(shù)據(jù)工程實(shí)踐能力,加之Python在數(shù)據(jù)科學(xué)領(lǐng)域的廣泛應(yīng)用,可以更好地發(fā)揮Spark在數(shù)據(jù)處理方面的優(yōu)勢。基于以上原因,本書主要的開發(fā)語言為Scala,有些案例與實(shí)戰(zhàn)會用Python實(shí)現(xiàn)。
- 后稀缺:自動化與未來工作
- 零起步輕松學(xué)單片機(jī)技術(shù)(第2版)
- 大數(shù)據(jù)技術(shù)基礎(chǔ)
- Mastering Spark for Data Science
- Getting Started with Oracle SOA B2B Integration:A Hands-On Tutorial
- Learning Apache Cassandra(Second Edition)
- 深度學(xué)習(xí)中的圖像分類與對抗技術(shù)
- DevOps:Continuous Delivery,Integration,and Deployment with DevOps
- 高維聚類知識發(fā)現(xiàn)關(guān)鍵技術(shù)研究及應(yīng)用
- 工業(yè)機(jī)器人應(yīng)用案例集錦
- Hadoop應(yīng)用開發(fā)基礎(chǔ)
- Visual Studio 2010 (C#) Windows數(shù)據(jù)庫項目開發(fā)
- Photoshop CS4數(shù)碼攝影處理50例
- 筆記本電腦電路分析與故障診斷
- 重估:人工智能與賦能社會