大資料:程式語言真的重要嗎?
在大資料領域內,每一毫秒的效能損失都影響巨大。然而,像Python這樣通常被認為效能不是太好的程式語言,在過去一年中卻變得越來越流行了。大資料社群最近出現的一些文章和討論,又一次點燃了用於資料科學以及大資料領域內的程式語言選擇之爭。
AdRoll的首席工程師Ville Tuulos認為程式語言本身的效能其實並不重要。Ville於2013年9月在舊金山將自己的調查發現釋出到了一個meetup組中,向我們展示了AdRoll中使用的基於Python構建的後端架構,以及它們是如何在效能上超過那些業界中的巨頭(例如Amazon的Redshift)的。他們獲得成功的關鍵是,整個系統是基於他們自己非常特殊的用例而構建的,因此可以針對那種用例進行優化。正如Ville所說:
不管通用解決方案是採用何種程式語言實現的,你都可以使用一種高階程式語言來快速地實現出一個效能比通用方案更好的,應用於特定領域的解決方案。
但這並不意味著程式語言一點都不重要。最近有不少關於哪種語言最適合資料科學和大資料領域的爭論,而這一殊榮最有力的競爭者就是Python和R語言。一些人甚至把它說成是資料科學領域內的一場戰爭。在LinkedIn上面也有針對這一話題的討論,看上去大家的普遍共識是,R語言是一種學術性語言,“對資料科學家而言,R語言的優勢在於它所提供的大量的包以及其多樣性”。
但是對於海量資料處理這一塊,總體說來Python受到更多程式設計師的青睞,正如來自Dish Network的資料科學家Tom Rampley所說:
我經常使用R語言的各種包中所提供的統計功能。我還使用它在小規模的資料集上面執行各種資料操作。但是對於文字解析、大資料集上的資料操作以及編寫自己的演算法這些任務來說,我更加喜歡使用Python並結合使用它的Numpy、Scipy和Pandas這些包。
在最近幾個月裡,Python似乎在各個方面都要更勝一籌,正如Karissa McKelvey在2013年10月所寫的那樣,“我的資料太大了,無法裝載到R語言中”,還有Matt Asay也聲稱,“在資料科學的博士們中間,R語言仍然很受歡迎,但是隨著資料逐漸成為主流,Python正在接替R語言的地位”。
語言自身的效能常常是我們在開發複雜架構時決定到底使用哪種語言的一個關鍵因素,而且這一因素常常被過度誇大。實際上真正重要的是我們如何使用一種語言,正如Linus Torvalds所說,“低水平的程式設計師總在關心程式碼,而高水平的程式設計師則關注資料結構及其關係。”
以Cloudera公司最近的一個開源專案Impala為例,它的目標是替代Hive,使查詢速度提高一個數量級。他們選擇使用了C++,而其他所有的Hadoop架構都是基於Java的,這種開發語言上的轉變經常被冠以某些與效能相關的原因。但實際上這裡的效能提升不是簡單地來自從Java到C++的轉換。Impala甚至沒有使用MapReduce,而是直接在記憶體中快取資料,所以很顯然,這裡的效能改善主要源於它採用了帶有不同資料結構和限制的一個完全不同的範型。這裡由Java到C++的轉換隻是一種錦上添花的工作,並不會對效能的改善起到雪中送炭的作用。
相關文章
- 你真的理解函數語言程式設計嗎?函數程式設計
- 你真的理解【函數語言程式設計】嗎?函數程式設計
- 你真的需要了解多種程式語言嗎?
- 大資料與程式語言關係大資料
- SQL資料庫真的已經不再那麼重要了嗎?SQL資料庫真的不支援雲端計算嗎?SQL資料庫
- Python真的勒死R語言了嗎?PythonR語言
- Python是萬能的程式語言嗎?這五大用途很重要!Python
- 如何選擇大資料的程式語言大資料
- 資料處理的 9 大程式語言
- 9個最佳的大資料處理程式語言大資料
- java基礎真的不重要嗎?Java
- 大資料時代,真的會有網站使用 DNT 嗎?大資料網站
- 學習遊戲要學習程式語言嗎?十大主流程式語言解析遊戲
- 在大資料時代,我們真的沒有隱私嗎?大資料
- 大資料揭祕:蘋果黨真的比安卓黨土豪嗎大資料蘋果安卓
- “高階”的程式語言是否真的高階?
- 大資料教程之《MYSQL資料庫》TCL語言和DCL語言大資料MySql資料庫
- 【謊言大揭祕】Modin真的比pandas執行更快嗎?
- 《人工智慧一定需要大資料嗎?未必!》真的麼?人工智慧大資料
- 學習不同程式語言的重要性
- 數學,英語,計算機基礎(或者更多),對學習程式設計(如java,大資料等)重要嗎?計算機程式設計Java大資料
- Julia會成為下一個程式設計大語言嗎?程式設計
- GO是更好的程式語言嗎?Go
- 十種程式語言幫你讀懂大資料的“祕密”大資料
- 大資料處理需要用到的九種程式語言大資料
- 全球流行程式語言資料表行程
- JavaScript演化成為一種重要程式語言JavaScript
- 學會了 C 語言真的可以開發出很多東西嗎?
- CDGA|資料素養對資料治理工作真的很重要!
- java 對測試來說真的不重要嗎Java
- 大語言模型與資料庫故障診斷模型資料庫
- 語音助手真的好用嗎?蘋果谷歌微軟三大助手對比蘋果谷歌微軟
- 當紅開發語言Go,真的是未來的技術主流嗎?Go
- 資料流&函數語言程式設計函數程式設計
- 程式語言基本組成:資料結構資料結構
- SQL語言基礎(資料控制語言)SQL
- JS的資料型別你真的懂了嗎JS資料型別
- 你真的會使用資料庫的索引嗎?資料庫索引