標籤:

為什麼有的hadoop課程會講授python?

hadoop開發中用得著python么?


沒說到點上,python各種好處,但為啥和hadoop有關。

hadoop,都喜歡扯大數據,總不能光hdfs存儲。最重要是datamining。

如果你查看數據挖掘相關庫,還是python居多。基本上主流數據挖掘語言還是python。

這也是hadoop為什麼提供python使用介面。

spark也是,支持語言是scala,java,python。

為了讓那些懂機器學習、數據挖掘的人,來玩hadoop、spark,大數據嘛。

大數據大數據,不光是數據儲存、數據統計,最重要是數據挖掘。


這真是一個好問題。作為一個工作很多年的碼農,多多少少的使用過C,VB,VB.net,C#,JAVA,Python,Scala等等編程語言,我慢慢地喜歡上了Python。這裡無關乎語言之爭,只是說一下我個人的看法,勿噴。

以一句話來開篇:人生苦短,我用Python

Python的好處主要有以下幾種(來源自《集體智慧編程》英文版《Programming Collective Intelligence Building Smart Web 2.0 Applications》這本書:

簡練

使用像Python這樣的動態類型語言編寫的代碼往往比用其他主流語言編寫的代碼更加簡短。這意味著,在完成示例的過程中會有更少的錄入工作,而且這也意味著我們將更容易記住演算法並真正領會演算法的原理。

易於閱讀

Python不時被人們指為「可執行的偽代碼」。雖然很明顯這是誇大之詞,但是它表明,大多數有經驗的程序員可以讀懂Python代碼並領會代碼所要表達的意圖。

易於安裝

不管是Windows,Linux還是Mac系統,只要配置好Python的環境,只需要easy_install XX或者pip install XX 就可以安裝所需要的第三方擴展包。當然,對於Windows 64bit的操作系統來說,可能稍微麻煩一點,有些會出現兼容性問題,不過也都可以找到相應的解決方案。

易於擴展

Python附屬了很多的標準庫,這些涉及數據函數,XML解析,以及網頁下載(筆者註:Python的BeautifulSoup是筆者見過的做好的HTML/XML解析工具之一,速度快,文檔例子非常多),RSS解析,SQLLite等等

交互性

Python可以直接從命令行運行程序,它還有交互提示,允許我們鍵入函數調用,創建對象,並以交互的形式對包進行測試。

多範式

Python支持面向對象,過程式和函數式的編程風格。機器學習演算法千差萬別,最為清晰的做法是針對不同演算法採用不同的範式。有時將函數作為參數傳入很有用處,而有時我們則需要再對象中捕獲狀態。對於這兩種方式,Python都比較好的予以支持。

多平台和開源免費

Python有一個針對所有主流平台的單一參考實現,並且對所有的平台都是免費的。Linux和Mac系統一般都是自帶Python的環境。Windows需要自行安裝,從visual studio 2013開始,微軟平台也開始支持Python的開發功能。

在這裡還有一個需要格外注意的事情,對於Python來言,Python 解釋器不是完全線程安全的。在Python 多線程當中,存在一個叫Global Interpreter Lock(GIL)的東西,直譯就是全局解釋器鎖。它的作用在於讓同一時刻只能有一個線程對於python對象進行操作。Python已經提供了各種機制讓我們進行多線程同步,為什麼又要整這個GIL呢?這是因為程序員控制的同步是對各個程序中可見的變數,而GIL同步的是解釋器後台的不可見變數,比如為了進行垃圾回收而維護的引用計數。如果沒有GIL,有可能出現由於線程切換導致的對同一個對象釋放兩次的情況。這點需要格外注意。


可以用python 也可以用其它語言

請看老外的ppt

http://www.slideshare.net/DonaldMiner/hadoop-with-python


有案例比較占課程時間


因為hadoop是分散式系統,計算是在所有節點上並行處理的,這意味著,無論你用何種語言,都必須在所有計算節點上安裝該語言的解釋器。例如,你想用nodejs寫mapreduce是可以的,但你必須要在每台nodemanager上安裝v8引擎才可以用。而python是安裝linux操作系統時就會自動被安裝的,因此不需要單獨安裝就可以讓節點參與計算,這樣會省很多事。

同時,python語法結構清晰,腳本可維護性高,也是一大優勢。

python也包含很多數據分析和挖掘的庫包可以直接引用,如num.py。

此外,如果不想在所有伺服器安裝其他腳本語言的解釋器的話,也可以將可運行的解釋器和你的計算腳本一起放在hadoop的distributed cache中運行。


推薦閱讀:

為什麼很多公司的大數據相關業務都基於 Hadoop 方案?
請問有哪些關於大數據以及hadoop好的學習課程?
哪裡有 hadoop 教程下載?
做好機器學習,數學要學到什麼程度?
如何連續執行兩段MapReduce?

TAG:Python | Java | Hadoop |