9個最佳的大資料處理程式語言

2016-05-24    分類:雲端計算/大資料、程式設計開發、首頁精華2人評論發表於2016-05-24

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

大資料的浪潮仍在繼續。它滲透到了幾乎所有的行業,資訊像洪水一樣地席捲企業,使得軟體越發龐然大物,比如Excel看上去就變得越來越笨拙。資料處理不再無足輕重,並且對精密分析和強大又實時處理的需要變得前所未有的巨大。

那麼,在巨大的資料集中進行篩選的最好工具是什麼?通過和資料駭客的交流,我們知道了他們用於硬核資料分析最喜歡的語言和工具包。

R語言

在這些語言名單中,如果R語言排第二,那就沒其他能排第一。自1997年以來,作為昂貴的統計軟體,如Matlab和SAS的免費替代品,它漸漸風靡全球。

在過去的幾年時間中,R語言已經成為了資料科學的寵兒——資料科學現在不僅僅在書呆子一樣的統計學家中人盡皆知,而且也為華爾街交易員,生物學家,和矽谷開發者所家喻戶曉。各種行業的公司,例如Google,Facebook,美國銀行,以及紐約時報都使用R語言,R語言正在商業用途上持續蔓延和擴散。

R語言有著簡單而明顯的吸引力。使用R語言,只需要短短的幾行程式碼,你就可以在複雜的資料集中篩選,通過先進的建模函式處理資料,以及建立平整的圖形來代表數字。它被比喻為是Excel的一個極度活躍版本。

R語言最偉大的資本是已圍繞它開發的充滿活力的生態系統:R語言社群總是在不斷地新增新的軟體包和功能到它已經相當豐富的功能集中。據估計,超過200萬的人使用R語言,並且最近的一次投票表明,R語言是迄今為止在科學資料中最流行的語言,被61%的受訪者使用(其次是Python,39%)。

此外,它的身影也漸漸出現在了華爾街。以前,銀行分析師會全神貫注於Excel檔案直到深夜,但現在R語言被越來越多地用於金融建模R,特別是作為一種視覺化工具,Niall O’Connor,美國銀行的副總裁如是說。 “R語言使我們平凡的表格與眾不同,”他說。

R語言的日漸成熟,使得它成為了資料建模的首選語言,雖然當企業需要生產大型產品時它的能力會變得有限,也有的人說這是因為它的地位正在被其他語言篡奪。

“R更適合於做一個草圖和大概,而不是詳細的構建,”Michael Driscoll,Metamarkets的執行長說。 “你不會在谷歌的網頁排名以及Facebook的朋友推薦演算法的核心找到R語言。工程師會用R語言做原型,然後移交給用Java或Python寫的模型。”

話說回來,早在2010年,Paul Butler就以R語言打造了全球的Facebook地圖而著名,這證明了該語言豐富的視覺化功能。儘管他現在已經不像以前那樣頻繁地使用R語言了。

“R正在一點點地過時,因為它的緩慢和處理大型資料集的笨重,”Butler說。

那麼,他使用什麼代替呢?請繼續閱往下看。

Rython

如果說R語言是一個神經質又可愛的高手,那麼Python是它隨和又靈活的表兄弟。作為一種結合了R語言快速對複雜資料進行挖掘的能力並構建產品的更實用語言,Python迅速得到了主流的吸引力。Python是直觀的,並且比R語言更易於學習,以及它的生態系統近年來急劇增長,使得它更能夠用於先前為R語言保留的統計分析。

“這是這個行業的進步。在過去的兩年時間中,從R語言到Python已經發生了非常明顯的轉變,”Butler說。

在資料處理中,在規模和複雜性之間往往會有一個權衡,於是Python成為了一種折中方案。IPython notebook和NumPy可以用作輕便工作的一種暫存器,而Python可以作為中等規模資料處理的強大工具。豐富的資料社群,也是Python的優勢,因為可以提供了大量的工具包和功能。

美國銀行使用Python在銀行的基礎架構中構建新的產品和介面,同時也用Python處理財務資料。“Python廣泛而靈活,因此人們趨之若鶩,”O’Donnell說。

不過,它並非最高效能的語言,只能偶爾用於大規模的核心基礎設施,Driscoll這樣說道。

Julia

雖然當前的資料科學絕大多數是通過R語言,Python,Java,MatLab和SAS執行的。但依然有其他的語言存活於夾縫中,Julia就是值得一看的後起之秀。

業界普遍認為Julia過於晦澀難懂。但資料駭客在談到它取代R和Python的潛力時會不由得眉飛色舞。Julia是一種高層次的,極度快速的表達性語言。它比R語言快,比Python更可擴充套件,且相當簡單易學。

“它正在一步步成長。最終,使用Julia,你就能夠辦到任何用R和Python可以做到的事情,”Butler說。

但是至今為止,年輕人對Julia依然猶豫不前。Julia資料社群還處於早期階段,要能夠和R語言和Python競爭,它還需要新增更多的軟體包和工具。

“它還很年輕,但它正在掀起浪潮並且非常有前途,”Driscoll說。

JAVA

Java,以及基於Java的框架,被發現儼然成為了矽谷最大的那些高科技公司的骨骼支架。 “如果你去看Twitter,LinkedIn和Facebook,那麼你會發現,Java是它們所有資料工程基礎設施的基礎語言,”Driscoll說。

Java不能提供R和Python同樣質量的視覺化,並且它並非統計建模的最佳選擇。但是,如果你移動到過去的原型製作並需要建立大型系統,那麼Java往往是你的最佳選擇。

Hadoop和Hive

一群基於Java的工具被開發出來以滿足資料處理的巨大需求。Hadoop作為首選的基於Java的框架用於批處理資料已經點燃了大家的熱情。Hadoop比其他一些處理工具慢,但它出奇的準確,因此被廣泛用於後端分析。它和Hive——一個基於查詢並且執行在頂部的框架可以很好地結對工作。

Scala

Scala是另一種基於Java的語言,並且和Java相同的是,它正日益成為大規模機器學習,或構建高層次演算法的工具。它富有表現力,並且還能夠構建健壯的系統。

“Java就像是建造時的鋼鐵,而Scala則像黏土,因為你之後可以將之放入窯內轉變成鋼鐵,”Driscoll說。

Kafka和Storm

那麼,當你需要快速實時的分析時又該怎麼辦呢?Kafka會成為你的好朋友。它大概5年前就已經出現了,但是直到最近才成為流處理的流行框架。

Kafka,誕生於LinkedIn內部,是一個超快速的查詢訊息系統。Kafka的缺點?好吧,它太快了。在實時操作時會導致自身出錯,並且偶爾地會遺漏東西。

“有精度和速度之間有一個權衡,”Driscoll說, “因此,矽谷所有的大型高科技公司都會使用兩條管道:Kafka或Storm用於實時處理,然後Hadoop用於批處理系統,此時雖然是緩慢的但超級準確。”

Storm是用Scala編寫的另一個框架,它在矽谷中因為流處理而受到了大量的青睞。它被Twitter納入其中,勿庸置疑的,這樣一來,Twitter就能在快速事件處理中得到巨大的裨益。

鼓勵獎:

MatLab

MatLab一直以來長盛不衰,儘管它要價不菲,但它仍然被廣泛使用在一些非常特殊的領域:研究密集型機器學習,訊號處理,影像識別,僅舉幾例。

Octave

Octave和MatLab非常相似,但它是免費的。不過,它在學術性訊號處理圈子之外很少見到。

GO

GO是另一個正在掀起浪潮的後起之秀。它由Google開發,從C語言鬆散地派生,並在構建健壯基礎設施上,正在贏得競爭對手,例如Java和Python的份額。

譯文連結:http://www.codeceo.com/article/9-best-language-crunching-data.html
英文原文:The 9 Best Languages For Crunching Data
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章