大數據:編程語言真的重要嗎?
英文原文:Big Data: Do Languages Really Matter?
在大數據領域內,每一毫秒的性能損失都影響巨大。然而,像 Python 這樣通常被認為性能不是太好的編程語言,在過去一年中卻變得越來越流行了。大數據社區最近出現的一些文章和討論,又一次點燃了用于數據科學以及大數據領域內的編程語言選擇之爭。
AdRoll 的首席工程師 Ville Tuulos 認為編程語言本身的性能其實并不重要。Ville 于 2013 年 9 月在舊金山將自己的調查發現發布到了一個 meetup 組中,向我們展示了 AdRoll 中使用的基于 Python 構建的后端架構,以及它們是如何在性能上超過那些業界中的巨頭(例如 Amazon 的 Redshift)的。他們獲得成功的關鍵是,整個系統是基于他們自己非常特殊的用例而構建的,因此可以針對那種用例進行優化。正如 Ville 所說:
不管通用解決方案是采用何種編程語言實現的,你都可以使用一種高級編程語言來快速地實現出一個性能比通用方案更好的,應用于特定領域的解決方案。
</blockquote>但這并不意味著編程語言一點都不重要。最近有不少關于哪種語言最適合數據科學和大數據領域的爭論,而這一殊榮最有力的競爭者就是 Python 和R語言。一些人甚至把它說成是數據科學領域內的一場戰爭。在 LinkedIn 上面也有針對這一話題的討論,看上去大家的普遍共識是,R語言是一種學術性語言,“對數據科學家而言,R語言的優勢在于它所提供的大量的包以及其多樣性”。
但是對于海量數據處理這一塊,總體說來 Python 受到更多程序員的青睞,正如來自 Dish Network 的數據科學家 Tom Rampley 所說:
我經常使用R語言的各種包中所提供的統計功能。我還使用它在小規模的數據集上面執行各種數據操作。但是對于文本解析、大數據集上的數據操作以及編寫自己的算法這些任務來說,我更加喜歡使用 Python 并結合使用它的 Numpy、Scipy 和 Pandas 這些包。
</blockquote>在最近幾個月里,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++ 的轉換只是一種錦上添花的工作,并不會對性能的改善起到雪中送炭的作用。
來自: InfoQ<span id="shareA4" class="fl"> </span>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!