
到底該使用哪一種大數據編程語言:R、Python、Scala和Java
說到處理大規模數據,R、Python、Scala和Java基本上都能滿足你的要求。
你有一個大數據項目,你知道問題領域(problem domain),也知道使用什么基礎設施,甚至可能已決定使用哪種框架來處理所有這些數據,但是有一個決定遲遲未能做出:我該選擇哪種語言?(或者可能更有針對性的問題是,我該迫使我的所有開發人員和數據科學家非要用哪種語言?)這個問題不會推遲太久,遲早要定奪。
當然,沒有什么阻止得了你使用其他機制(比如XSLT轉換)來處理大數據工作。但通常來說,如今大數據方面有三種語言可以選擇:R、Python和Scala,外加一直以來屹立于企業界的Java。那么,你該選擇哪種語言?為何要選擇它,或者說何時選擇它?
下面簡要介紹了每種語言,幫助你做出合理的決定。
R
R經常被稱為是“統計人員為統計人員開發的一種語言”。如果你需要深奧的統計模型用于計算,可能會在CRAN上找到它――你知道,CRAN叫綜合R檔案網絡(Comprehensive R Archive Network)并非無緣無故。說到用于分析和標繪,沒有什么比得過ggplot2。而如果你想利用比你機器提供的功能還強大的功能,那可以使用SparkR綁定,在R上運行Spark。
然而,如果你不是數據科學家,之前也沒有用過Matlab、SAS或OCTAVE,可能需要一番調整,才能使用R來高效地處理。雖然R很適合分析數據,但是就一般用途而言不太擅長。你可以用R構建模型,但是你需要考慮將模型轉換成Scala或Python,才能用于生產環境,你不太可能使用這種語言編寫一種集群控制系統(運氣好的話,你可以對它進行調試)。
Python
如果你的數據科學家不使用R,他們可能就會徹底了解Python。十多年來,Python在學術界當中一直很流行,尤其是在自然語言處理(NLP)等領域。因而,如果你有一個需要NLP處理的項目,就會面臨數量多得讓人眼花繚亂的選擇,包括經典的NTLK、使用GenSim的主題建模,或者超快、準確的spaCy。同樣,說到神經網絡,Python同樣游刃有余,有Theano和Tensorflow;隨后還有面向機器學習的scikit-learn,以及面向數據分析的NumPy和Pandas。
還有Juypter/iPython――這種基于Web的筆記本服務器框架讓你可以使用一種可共享的日志格式,將代碼、圖形以及幾乎任何對象混合起來。這一直是Python的殺手級功能之一,不過這年頭,這個概念證明大有用途,以至于出現在了奉行讀?。x?。敵觯h(REPL)概念的幾乎所有語言上,包括Scala和R。
Python往往在大數據處理框架中得到支持,但與此同時,它往往又不是“一等公民”。比如說,Spark中的新功能幾乎總是出現在Scala/Java綁定的首位,可能需要用PySpark編寫面向那些更新版的幾個次要版本(對Spark Streaming/MLLib方面的開發工具而言尤為如此)。
與R相反,Python是一種傳統的面向對象語言,所以大多數開發人員用起來會相當得心應手,而初次接觸R或Scala會讓人心生畏懼。一個小問題就是你的代碼中需要留出正確的空白處。這將人員分成兩大陣營,一派覺得“這非常有助于確??勺x性”,另一派則認為,2016年,我們應該不需要就因為一行代碼有個字符不在適當的位置,就要迫使解釋器讓程序運行起來。
Scala
現在說說Scala:在本文介紹的四種語言中,Scala是最輕松的語言,因為大家都欣賞其類型系統。Scala在JVM上運行,基本上成功地結合了函數范式和面向對象范式,目前它在金融界和需要處理海量數據的公司企業中取得了巨大進展,常常采用一種大規模分布式方式來處理(比如Twitter和LinkedIn)。它還是驅動Spark和Kafka的一種語言。
由于Scala在JVM里面運行,它可以立即隨意訪問Java生態系統,不過它也有一系列廣泛的“原生”庫,用于處理大規模數據(尤其是Twitter的Algebird和Summingbird)。它還包括一個使用非常方便的REPL,用于交互式開發和分析,就像使用Python和R那樣。
我個人非常喜歡Scala,因為它包括許多實用的編程功能,比如模式匹配,而且被認為比標準的Java簡潔得多。然而,用Scala來開發不止一種方法,這種語言將此作為一項特色來宣傳。這是好事!不過考慮到它擁有圖靈完備(Turing-complete)的類型系統和各種彎彎曲曲的運算符(“/:”代表foldLeft,“:\”代表foldRight),很容易打開Scala文件,以為你看到的是某段討厭的Perl代碼。這就需要在編寫Scala時遵循一套好的實踐和準則(Databricks的就很合理)。
另一個缺點是,Scala編譯器運行起來有點慢,以至于讓人想起以前“編譯!”的日子。不過,它有REPL、支持大數據,還有采用Jupyter和Zeppelin這一形式的基于Web的筆記本框架,所以我覺得它的許多小問題還是情有可原。
Java
最終,總是少不了Java――這種語言沒人愛,被遺棄,歸一家只有通過起訴谷歌才有錢可賺時才似乎關心它的公司(注:Oracle)所有,完全不時髦。只有企業界的無人機才使用Java!不過,Java可能很適合你的大數據項目。想一想Hadoop MapReduce,它用Java編寫。HDFS呢?也用Java來編寫。連Storm、Kafka和Spark都可以在JVM上運行(使用Clojure和Scala),這意味著Java是這些項目中的“一等公民”。另外還有像Google Cloud Dataflow(現在是Apache Beam)這些新技術,直到最近它們還只支持Java。
Java也許不是搖滾明星般備受喜愛的首選語言。但是由于研發人員在竭力理清Node.js應用程序中的一套回調,使用Java讓你可以訪問一個龐大的生態系統(包括分析器、調試器、監控工具以及確保企業安全和互操作性的庫),以及除此之外的更多內容,大多數內容在過去二十年已久經考驗(很遺憾,Java今年迎來21歲,我們都老矣)。
炮轟Java的一個主要理由是,非常繁瑣冗長,而且缺少交互式開發所需的REPL(R、Python和Scala都有)。我見過10行基于Scala的Spark代碼迅速變成用Java編寫的變態的200行代碼,還有龐大的類型語句,它們占據了屏幕的大部分空間。然而,Java 8中新的Lambda支持功能對于改善這種情況大有幫助。Java從來不會像Scala那么緊湊,但是Java 8確確實實使得用Java進行開發不那么痛苦。
至于REPL?好吧,目前還沒有。明年推出的Java 9會包括JShell,有望滿足你的所有REPL要求。
哪種語言勝出?
你該使用哪種語言用于大數據項目?恐怕這還得“視情況而定”。如果你對晦澀的統計運算進行繁重的數據分析工作,那么你不青睞R才怪。如果你跨GPU進行NLP或密集的神經網絡處理,那么Python是很好的選擇。如果想要一種加固的、面向生產環境的數據流解決方案,又擁有所有重要的操作工具,Java或Scala絕對是出色的選擇。
當然,不一定非此即彼。比如說,如果使用Spark,你可以借助靜態數據,使用R或Python來訓練模型和機器學習管道(pipeline),然后對該管道進行序列化處理,倒出到存儲系統,那里它可以供你的生產Scala Spark Streaming應用程序使用。雖然你不應該過分迷戀某一種語言(不然你的團隊很快會產生語言疲勞),使用一套發揮各自所長的異構語言也許會給大數據項目帶來成效。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25