Python與大資料的未來 - DARPA慷慨解囊的背後

pythontab發表於2013-03-29

據 InformationWeek近日的一則訊息顯示,DARPA(美國國防高階研究計劃局)將給分析公司 Continuum Analytics投資300萬美元,用於開發Python的資料分析和處理庫。這筆資金來自其將在四年內投資1億美元來改善大資料技術的XDATA專案,這個專案旨在“開 發用於分析國防活動中海量面向任務資訊的 計算技術和軟體工具”。

Continuum Analytics將致力Blaze和Bokeh庫的開發:Blaze用於科學計算,而Bokeh則是一個視覺化系統。

其中,Blaze將同時擴充套件現有的數學計算庫NumPy和科學計算庫SciPy,使其更適應大資料庫技術。Blaze將聚焦在核心外處理超過系統記憶體容量的大型資料集,並同時支援分散式資料和流資料。

而Bokeh則是一個用於大資料視覺化的Python庫,Continuum稱之為用於大型資料集的“可擴充套件、互動式以及易於使用的視覺化系統”。Bokeh將整合許多視覺化技術,將包含Stencil視覺化模型和Grammar of Graphics。

Python的執行效率可以用“低下”來形容了,那麼究竟又是什麼讓它與大資料擦出了火花?首先要先看一下Python語言自身的優勢:

1.易於學習的Python

眾所周知,大多數的大資料分析工作都不是開發者在做,這樣易於學習的Python就有了被Continuum Analytics與DARPA同時看重的理由。就像該公司董事長Peter Wang說:“如果他們可以學習一門簡單的語言,他們將不需要額外的軟體開發部門去參與資料分析。”

2.解釋性語言Python

基於解釋語言的特性,使用Python進行開發無疑可以數倍的提升編碼效率;不到C++/Java一半的程式碼行將大幅度減少開發過程和維護階段的工作量,相信不會被大部分開發者討厭。

上文說到Python受開發者喜愛的兩個方面:易於學習和高效的編碼效率;然而作為解釋性語言,Python的執行效率必然不會很快,而快於Python幾倍、甚至幾十倍的語言也是一抓一大把,那麼Python在海量的資料處理中還會具備優勢嗎?

Python與大資料的未來 - DARPA慷慨解囊的背後

大資料vs. Python

俗話說具體問題具體對待,而一般我們從本質上把大資料應用場景分為兩個方面:

1.CPU密集型操作

在CPU密集型操作情況下,我們需要對海量的資料進行計算;而剛剛說到作為解釋性語言Python有著“相對杯具”的執行效率,那麼在像求逆矩陣、向量相似度等對語言高效性非常依賴的情景下,讓Python去做這些必然會造成效能下降和負載增加。然而別忘了Python還有個暱稱 —— 膠水語言,其整合機制可以輕鬆的聯結使用其它語言編寫的模組,比如:C、C++、Java。這樣我們就可以完全根據情況需要,使用Python來做框架,在核心CPU密集操作部分呼叫C或者其它高效語言。這樣開發效率和效能都得以保障,至於對開發團隊要求的增高就是另外一回事了。

2.I/O密集型操作

在這個場景下,我們經常做的是頻繁的I/O操作、頻繁的輸入/讀取檔案系統,但是不會涉及到複雜的計算。出於這些操作通常都是呼叫作業系統介面來完成,所以對語言的要求顯然不會太高。

從DARPA得到助力的不只是Python一個領域,下面看一下最近從DARPA獲得資金的專案:

近期得到DARPA慷慨解囊的機構

在2012年11月,資料視覺化和軟體公司Kitware收到一筆400萬美元的資金,用於和軟體公司KnowledgeVis及一些高校一起開發名為Visualization Design Environment的開源資料聚合、查詢和視覺化工具包。

其後2012年12月,喬治亞理工學院公佈他們獲得了270萬美元資金;這些資金用於在可擴充套件的機器學習技術和分散式計算架構上的研究,致力研發快速處理資料分析的演算法。同樣在新機器學習軟體方面,Scientific Systems Company也獲得了數額不詳的資金。

2月,資料庫開發者兼軟體資訊公司SYSTAP獲得XDATA專案的200萬美元,這筆資金用於建立一個開源圖分析平臺(使用GPU計算叢集)。


相關文章